Я бы рекомендовал не использовать ссылку_ здесь.Использование действия 'get' для изменения / добавления данных на сервере обычно не одобряется.Кроме того, я бы не использовал действие «new», так как оно используется соглашением в маршруте Rails Restful для представления формы, а не для сохранения данных.Все, что сказано, простой ответ на ваш вопрос состоит в том, чтобы передать значение через помощник link_to следующим образом:
link_to 'Add broadcast', new_broadcast_path(:station_id => station.id)
... и ваш «новый» метод в BroadcastsController будет делать:
def new
@broadcast = BroadCast.new(:station_id => params[:station_id])
if @broadcast.save
flash[:notice] = "New broadcast created!"
redirect :back # or whatever
else
# etc.
end
end
Но, опять же, это не правильный способ сделать это.Что вы, вероятно, хотите сделать, так это придерживаться соглашений Rails (и веб-сайтов) и использовать форму для создания новой широковещательной записи с помощью действия «create» на контроллере.Вы можете разместить эту форму рядом с вашими станциями в индексном представлении, которое представляет собой кнопку, указывающую на правильное действие 'create' для BroadcastsController, и использует скрытое поле для установки station_id.Что-то вроде (РЕДАКТИРОВАТЬ: лучше использовать hidden_field):
<% form_for :broadcast do |f| %>
<%= f.hidden_field :station_id, :value=> station.id %>
<%= submit_tag 'Add broadcast' %>
<% end %>
Предполагая, что вы установили спокойный маршрут в маршрутах.Форма автоматически указывает на действие 'create' в BroadcastsController, которое вы должны написать примерно так:
def create
@broadcast = BroadCast.new(params[:broadcast])
if @broadcast.save
# etc., etc.
end
Направляющие Rails - это хорошее место для более удобной работы сДействия контроллера Rails.Я также потратил некоторое время на просмотр действий RESTful и их использования в Rails.