В Rails 3 как использовать button_to для изменения значения логического значения? - PullRequest
3 голосов
/ 19 августа 2011

Я пытаюсь написать оператор button_to, который обновляет логическое значение в моей базе данных activerecord. Вот что я попробовал:

<%= button_to "To Amazon", :controller => 'payments', :true => @payment.to_amazon, :method => :put %>

Более масштабная картина, которую я пытаюсь сделать, - это кнопка, которая обновляет платежный объект и запускает вызов частного метода для перевода драгоценных камней для связи с платежами Amazon. Итак:

1) Как использовать button_to для обновления логического значения?

2) Является ли изменение логического значения хорошим способом доступа к приватному методу в контроллере?

1 Ответ

4 голосов
/ 19 августа 2011

Что вы можете сделать, это использовать 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

Надеюсь, я правильно понял ваш вопрос и помог вам найти элегантное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...