Ruby on Rails: no se puede implementar el sistema Star Rating
Estoy tratando de agregar un sistema simple de calificación de estrellas para mi aplicación que ha tomadoeste tutorial para un ejemplo. Tengo modelos de usuario, hotel y clasificación. Las dependencias son:
(rating.rb)
belongs_to :user
belongs_to :hotel
(hotel.rb) y (user.rb)
has_many :ratings
Y con el siguiente código en la vista del hotel me sale este error:
NombreError en hoteles # show
variable local indefinida o método `usuario 'para Clase ...
(en la línea con<% = form_for...)
Vista del hotel (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 %>
El controlador de calificaciones es:
def create
end
def update
end
def rating_params
params.require(:rating).permit(:stars)
end
El archivo de migración es:
create_table :ratings do |t|
t.integer :stars, :default => 0
t.references :store
t.references :user
end