2013-11-12 2 views
0

Я работаю над получением системы оплаты за клик, запущенной на моем приложении, и мне удалось получить некоторую помощь в настройке структуры здесь на SO. Вот что у меня до сих пор:Вызовите несколько методов контроллера на link_to click

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. Есть ли способ вызвать второй метод в link_to? Или, возможно, использование javascript было бы лучшим решением? Честно говоря, я относительно новичок в RoR, и я не знаю много javascript вообще. Любые предложения о том, как лучше всего это сделать? Заранее спасибо!

ответ

1

Это звучит, как вы хотите следующее:

  • пользователь нажимает на ссылку, которая приведет к Deal
  • а Нажмите создан для этого курса
  • пользователь видит страницу сделки к

Я думаю, что есть два достойных способа сделать это. Один из них - рассматривать ссылки как кнопки, которые выполняют POST на ClicksController. Другой - иметь after_filter на DealController.

Бывший будет означать изменение ссылок, чтобы указать на ClicksController, используйте POST (который по умолчанию направляет к действию #create), и имеют редирект в конце действия #create к

redirect_to @deal 

См. link_to docs для получения дополнительной информации.

Это кажется более RESTful, хотя link_to может быть немного уродливым.

Последний вариант означает добавление что-то вроде

after_filter -> { @deal.clicks.create } 

для метода DealsController # шоу.

+0

Хорошие мысли, я пошел с чем-то похожим на первое предложение. Я закончил тем, что использовал form_for. Добавление всех параметров в метод изменения и действия link_to +, казалось, немного запуталось. Не хотел иметь дело с нажатием кнопки button, когда мне нужна кнопка для изображения. Спасибо за ответ! – settheline

Смежные вопросы