form_tag 用于创建/更新操作 rails 3 [英] form_tag for create/update action rails 3

查看:34
本文介绍了form_tag 用于创建/更新操作 rails 3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的路由文件如下所示:

My route file looks like this:

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

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

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

I'm trying to generate a form with an action that targets the rate action in articles. Ideally, when the form is submitted, a rating will either be created or updated. Elsewhere, I have that an article has_many ratings.

这不起作用:

= 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

非常感谢帮助.谢谢.

推荐答案

rails 是否显示一些错误?我认为您的路线错误:'rate/:stars' 告诉 rails 在您调用 rate_article_path 时需要一个参数(链接 rate_article_path(5) 为 5 星)

does rails shows some error? I think you have your route wrong: 'rate/:stars' tells rails to expect a parameter when you call rate_article_path (something link rate_article_path(5) for 5 stars)

你应该有你的路线:

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

(真的很简单,你应该做一些验证,只是想知道该怎么做)

(it's really simplified, you should do some validations, it's just to get the idea of what to do)

这篇关于form_tag 用于创建/更新操作 rails 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆