我的路线文件如下:
scope :locslug/:userslug do
....
....
post 'rate/:stars' => 'articles#rate' :as => :rate_article
end
我正在尝试生成一个带有针对文章中 rate 操作的操作的表单。理想情况下,提交表单时,将创建或更新评级。在其他地方,我有一篇文章有很多评级。
这不起作用:
= form_tag rate_article_path, :method=>'post', :id => "rate_article" do
=hidden_field_tag :article_id, @article.id
=hidden_field_tag :stars, 0
=hiden_field_tag :user, current_user.id
非常感谢帮助。谢谢。
答案 0 :(得分:1)
rails会显示一些错误吗?我认为你的路线错了:'rate /:stars'告诉rails在你调用rate_article_path时需要一个参数(链接rate_article_path(5)为5星)
你应该有你的路线:
post 'rate/:article_id' => 'articles#rate' :as => :rate_article
你的表格:
= form_tag rate_article_path(@article), :method=>'post', :id => "rate_article" do
=hidden_field_tag :stars, 0
现在在你的控制器上
def rate
article = Article.find(params[:article_id])
article.rates.create(:user => current_user, :stars => params[:stars])
end
(它真的很简单,你应该做一些验证,这只是想知道该怎么做)