您可以做的是使用 AJAX 回调您的控制器以切换该布尔值。在这种情况下,我可能只使用链接或复选框,但最终没什么大不了的。如果你想要一些关于如何执行此操作的示例代码,请告诉我。
有一个 similar question 关于指定我回答的操作,我在那里使用了一个 link_to,如下所示:
link_to "Profile", :controller => "profiles", :action => "show", :method => :get, :id => @profile
因此您可以指定操作,但这仅适用于链接而不是按钮。但是您可以执行一些特殊操作来进行更新。
至于你的第二个问题,如果我理解正确,你想在@payment 对象上设置一个布尔值然后调用私有方法?我假设您也将布尔值存储在数据库中。因此,您的控制器操作可以执行以下操作:
@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
我希望我已经正确理解了您的问题,并帮助您找到了一个优雅的解决方案。