那么你可以做的是使用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
我希望我能正确理解你的问题,并帮助你迈向一个优雅的解决方案。