Вызовите несколько методов контроллера по ссылке
Я работаю над тем, чтобы в моем приложении работала система оплаты за клик, и я смог получить некоторую помощь в настройке фреймворка здесь, на SO. Вот что у меня так далеко:
class Click < ActiveRecord::Base
belongs_to :deal
belongs_to :vendor
end
class ClicksController < ApplicationController
def create
@deal = Deal.find(params[:deal_id])
@deal.clicks.create
end
end
class Deal < ActiveRecord::Base
belongs_to :vendor
has_many :clicks
end
Я хочу иметь возможность позвонить моему create
Метод в любое время у меня есть ссылка на ресурс сделки. При щелчке пользователь будет переведен в это представление сделок, поэтому я не хочу заменять метод по умолчанию в link_to. Есть ли способ вызвать второй метод на link_to? Или, возможно, использование JavaScript было бы лучшим решением? Честно говоря, я относительно новичок в RoR, и я совсем не знаю много JavaScript. Любые предложения о том, как лучше всего это сделать? Заранее спасибо!
1 ответ
Похоже, вы хотите следующее:
- пользователь нажимает на ссылку, которая приведет к сделке
- Клик создан для этой сделки
- пользователь видит страницу сделки
Я думаю, что есть два достойных способа сделать это. Одним из них является обработка ссылок как кнопок, выполняющих POST для ClicksController. Другой - иметь фильтр after_filter в DealsController.
Первый будет означать изменение ваших ссылок для указания на ClicksController, использование POST (которое по умолчанию указывает на действие #create) и перенаправление в конце действия #create для
redirect_to @deal
Смотрите link_to документы для получения дополнительной информации.
Это выглядит более RESTful, хотя link_to может показаться немного уродливым.
Последний вариант означает добавление чего-то вроде
after_filter -> { @deal.clicks.create }
для метода DealsController#show.