gpt4 book ai didi

ruby-on-rails - 添加一个简单的链接以在 Rails 中设置 bool 字段 - 似乎什么也没发生

转载 作者:行者123 更新时间:2023-12-04 23:09:10 26 4
gpt4 key购买 nike

我正在尝试添加到 Rails View 的链接,以便在单击时将 bool 字段设置为 true。在 Controller (present_controller.rb) 中,我有以下代码:

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

在关联 View 中,我有以下代码:
<%= link_to "I want to buy this present", :url => {:action => "taken_toggle", :id => @present.id} %>

但是,当我单击按钮时,什么也没有发生。如果我回到主列表, bool 字段尚未更新。在日志中,我得到以下信息:
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 routes现在给出以下行(在所有正常 route ):
taken_toggle_present PUT    /presents/:id/taken_toggle(.:format) {:controller=>"presents", :action=>"taken_toggle"}

我应该将链接更改为什么才能使其工作?目前链接还在:
<%= link_to "I want to buy this present", :url => {:action => "taken_toggle", :id => @present.id} %>

但这对我来说似乎是正确的,因为它会执行正确的操作,并传入 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 routes 的输出,这似乎有点奇怪以上。有任何想法吗?

最佳答案

您似乎在使用 rails 3 应用程序。正确获取方法(GET、PUT)和路由应该有效。

路由部分,要么在presents资源中定义taken_toggle,像这样:

资源:礼物做
成员(member)做
put :taken_toggle
结尾
结尾

或者像 Nikita 建议的那样使用 match:

匹配 'presents/:id/taken_toggle', :as => "taken_toggle_present",
:to => "presents#taken_toggle"

现在链接部分:

<%= link_to "I want to buy this present", taken_toggle_present_path(@present), :method => :put %>

关于ruby-on-rails - 添加一个简单的链接以在 Rails 中设置 bool 字段 - 似乎什么也没发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4843013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com