Ruby on Rails: не удается внедрить систему Star Rating
Я пытаюсь добавить простую систему Star Rating для моего приложения, принявэтот урок для примера. У меня есть модели User, Hotel и Rating. Зависимости:
(Rating.rb)
belongs_to :user
belongs_to :hotel
(hotel.rb) & (user.rb)
has_many :ratings
И со следующим кодом в виде отеля я получаю эту ошибку:
NameError in Hotels # show
неопределенная локальная переменная или метод "пользователь" для класса ...
(в соответствии с<% = form_for...)
Вид на отель (Show.html.erb):
<% form_id = "hotel_#{@hotel.id}_rating" %>
<% if signed_in? %> <!-- To avoid throwing an exception if no user is signed in -->
<% user_id = current_user.id %>
<% else %>
<% user_id = -1 %>
<% end %>
<%= form_for @hotel.ratings.find_or_create_by_user_id user.id,
:html => {:id => form_id,
:class => "star_rating_form"} do |f| %>
<%= f.hidden_field :hotel_id, :value => @hotel.id %>
<% if signed_in? %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<% end %>
<%= f.hidden_field :stars, :id => form_id + "_stars" %>
<% end %>
<% (1..5).each do |i| %>
<li class="rating_star" id="<%= form_id %>_<%= i %>" data-stars="<%= i %>" data-form-id="<%= form_id %>"></li>
<% end %>
Рейтинговый контроллер это:
def create
end
def update
end
def rating_params
params.require(:rating).permit(:stars)
end
Файл миграции:
create_table :ratings do |t|
t.integer :stars, :default => 0
t.references :store
t.references :user
end