Что вы можете сделать, это использовать AJAX для обратного вызова вашего контроллера для переключения этого логического значения.В этом случае, возможно, я бы просто использовал ссылку или флажок вместо этого, но в конце концов это не так уж и сложно.Если вам нужен код для примера того, как это сделать, дайте мне знать.
Был похожий вопрос об указании действий, на которые я ответил, и я использовал там ссылку 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
Надеюсь, я правильно понял ваш вопрос и помог вам найти элегантное решение.