加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 添加一个简单的链接来设置Rails中的布尔字段

发布时间:2020-12-17 03:44:42 所属栏目:百科 来源:网络整理
导读:我正在尝试添加一个链接到Rails视图,以便在单击时将布尔字段设置为true.在控制器(present_controller.rb)中,我有以下代码: def taken_toggle @matching = Present.find(params[:id]) @matching.taken = true @matching.saveend 在相关视图中,我有以下代码:
我正在尝试添加一个链接到Rails视图,以便在单击时将布尔字段设置为true.在控制器(present_controller.rb)中,我有以下代码:

def taken_toggle
  @matching = Present.find(params[:id])
  @matching.taken = true
  @matching.save
end

在相关视图中,我有以下代码:

<%= link_to "I want to buy this present",:url => {:action => "taken_toggle",:id => @present.id} %>

但是,当我点击按钮时没有任何反应.如果我返回主列表,则布尔字段尚未更新.在日志中我得到以下内容:

Started GET "/presents/2/edit?url[action]=taken_toggle&url[id]=2" for 152.78.101.154 at Sun Jan 30 04:56:34 -0800 2011
  Processing by PresentsController#edit as HTML
  Parameters: {"url"=>{"action"=>"taken_toggle","id"=>"2"},"id"=>"2"}
Rendered presents/_form.html.erb (6.0ms)
Rendered presents/edit.html.erb within layouts/application (10.0ms)
Completed 200 OK in 13ms (Views: 10.7ms | ActiveRecord: 0.9ms)

我敢肯定我错过了一些非常简单的事 – 有谁知道它是什么?

更新:我添加了路线和rake路线现在给出以下行(在所有正常路线中):

taken_toggle_present PUT    /presents/:id/taken_toggle(.:format) {:controller=>"presents",:action=>"taken_toggle"}

我应该更改链接以使其工作?目前链接仍然是:

<%= link_to "I want to buy this present",:id => @present.id} %>

但这对我来说似乎是正确的,因为它会采取正确的行动,并传递身份证.有任何想法吗?

更新:
我已经尝试了最新的答案,但是它们都会导致以下日志错误:

Started GET "/presents/2/taken_toggle" for 86.150.141.2 at Fri Feb 04 01:37:23 -0800 2011

ActionController::RoutingError (No route matches "/presents/2/taken_toggle"):

考虑到上面的rake路线的输出,这看起来有点奇怪.有任何想法吗?

解决方法

link_to不接受:url选项,因此它将您的:url哈希中的所有内容转换为GET参数:您可以在日志中的请求路径中看到它们:

GET "/presents/2/edit?url[action]=taken_toggle&url[id]=2"

你应该只能取出:url => {}部分使链接工作:

link_to "I want to buy this present",:action => "taken_toggle",:id => @present.id

但是,通常,指定到restful操作的链接的首选方法是使用path helper:

link_to "I want to buy this present",taken_toggle_present_path(@present)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读