2

我的路由文件如下所示:

scope :locslug/:userslug do  
....
....

post 'rate/:stars' => 'articles#rate' :as => :rate_article
end

我正在尝试生成一个带有针对文章中的速率操作的操作的表单。理想情况下,当提交表单时,将创建或更新评级。在其他地方,我有一篇文章 has_many 评级。

这不起作用:

= 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

非常感谢您的帮助。谢谢你。

4

1 回答 1

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

(它真的很简单,你应该做一些验证,这只是为了了解要做什么)

于 2012-07-03T20:08:23.360 回答