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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |