Ruby on Rails: какой идентификатор мне здесь нужен? - PullRequest
2 голосов
/ 18 марта 2011

У меня есть частичная кнопка, которую я хочу отправить методу create в моем контроллере video_votes.Эта часть находится в каталоге просмотра video_votes, но отображается в другую часть, которая находится в каталоге просмотра видео.Мой первый вопрос: нужно ли указывать контроллер и действие или только действие?Вот кнопка:

<%= button_to "+1", { :action => "create", :id => @video.id, :type => "up" }, :remote => true %>

Во-вторых, я не уверен, какой идентификатор мне следует передать кнопке.Видеомодель has_many video_votes, а video_votes принадлежат видео.

Ответы [ 2 ]

2 голосов
/ 18 марта 2011
<%= button_to "+1", video_votes_path(@video, :type=> "up"), :remote => true %>

Имейте в виду, что я не знаю ваш точный маршрут (я догадался по пути video_votes_path), но запустите rake routes в командной строке и установите тот, который указывает на действие создания в video_votesконтроллер.Вы можете передать видео объект для представления идентификатора.

1 голос
/ 18 марта 2011

Часть URL :controller получена из текущего контроллера.Так что это зависит от того, по какому URL вы сейчас находитесь.Таким образом, ответ - да, вам нужно указать контроллер, если вы просматриваете его на контроллере, отличном от video_votes.Но лучший способ сделать это - использовать метод video_votes_path для генерации пути.

Для второго вопроса вы можете передать параметры в виде хэша.Вот пример:

<%= button_to "+1", video_votes_path(
      :video_vote => {:video_id => @video, :type => 'up'}),
      :remote => true) %>

Тогда в вашем контроллере вы можете иметь обычное:

def create
  @video_vote = VideoVote.new(params[:video_vote])
  ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...