我已经获得了一个基于 railscast 238 的评论模型,但我也想添加投票和评级。
我目前对文章控制器的展示是:
def show
@article = Article.find(params[:id])
@commentable = @article
@comments = @commentable.comments
@comment = Comment.new
respond_to do |format|
format.html # show.html.erb
format.json { render json: @article }
end
end
我曾尝试复制相同的过程并添加 rateable,但我不知道如何将其集成到 show 动作中。我考虑过从应用程序控制器创建一个通用函数,然后尝试将其分配给 show 函数中的多个事物(newb),但这似乎过于复杂。
我尝试添加:
@rateable = @article
@ratings = @rateable.ratings
@rating = Rating.new
它不起作用。但是现在我想如果我将它分配给它可能会起作用
@ratings = Article.find(params[:id]}
@ratings = @rateable.ratings
@rating = Rating.new
即使这确实有效,也必须有更清洁的方法来做到这一点。
编辑:
这行代码更正后的错误,与工作注释版本相同。
<%= form_for [@rateable, @rating] do |f| %>
<% if @rating.errors.any? %>
<div class="error_messages">
<h2>Please correct the following errors.</h2>
<ul>
<% @rating.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.text_area :content, rows: 8 %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>