我正在尝试编写一个button_to语句,用于更新activerecord数据库中的布尔值。这是我试过的:
<%= button_to "To Amazon", :controller => 'payments', :true => @payment.to_amazon, :method => :put %>
更大的图片我想要做的是有一个更新付款对象的按钮,并触发私人方法的调用,以便宝石汇款与亚马逊付款进行通信。所以:
1)如何使用button_to更新布尔值?
2)更改布尔值是否是访问控制器中私有方法的好方法?
答案 0 :(得分:4)
你能做的就是使用AJAX对你的控制器进行回调以切换该布尔值。在这种情况下,我可能只是使用链接或复选框,但最终不是一个大问题。如果您需要一些代码来说明如何执行此操作,请告诉我。
有一个similar question关于指定我回答的操作,我在那里使用了link_to:
link_to "Profile", :controller => "profiles", :action => "show", :method => :get, :id => @profile
所以你可以指定动作,但这只适用于链接而不是按钮。但你可以做一些特殊的动作来完成更新。
至于你的第二个问题,如果我理解正确,你想在@payment
对象上设置一个布尔值然后调用私有方法?我假设你也将boolean存储在数据库中。因此,您的控制器操作可以执行以下操作:
@payment.call_amazon_payment_method
然后在payment.rb中(假设您的布尔列只是因为缺少更好的假名而被称为“boolean_col”):
def call_amazon_payment_method
new_val = self.boolean_col? false : true
self.update_attributes(:boolean_col => new_val)
# if that alone will trigger your private method, you're done, or:
self.private_amazon_payment_method
end
我希望我能够正确理解你的问题并帮助你找到一个优雅的解决方案。