Рельсы, перенаправить с НОВОГО на СОЗДАТЬ - PullRequest
2 голосов
/ 23 ноября 2010

Привет всем, я пишу приложение для обработки регистрации на спортивные мероприятия. В некоторых из этих соревнований участвуют несколько спортсменов, а в некоторых - только один спортсмен. В настоящее время я отправляю спортсмена в действие NEW на BoatsController примерно так:

<%= link_to 'Register', new_event_boat_path(@event) %>

У меня вопрос: если в результате действия NEW будет показано, что для участия в событии требуется только один пользователь, как я могу перенаправить пользователя непосредственно в действие CREATE? Если говорить более кратко, как я могу сгенерировать POST из действия?

Ответы [ 3 ]

4 голосов
/ 10 сентября 2011

Вам не нужно делать что-то необычное. Действие создания - это просто метод в вашем контроллере. Вы можете вызвать его, как и любой другой метод:

def new
   if event_only_requires_one_user_per_boat
       create
   else
      #display new form
   end
end

Кроме того, этот метод не позволяет пользователю делать несколько запросов, поскольку он не делает перенаправления пользователя.

1 голос
/ 23 ноября 2010

Вместо этого вы можете создать метод, который инкапсулирует большую часть кода из вашего действия create, и вызвать его из create (с обычными параметрами) и из вашего особого случая в new (отправка данных из вашего пользовательского объекта).*

0 голосов
/ 23 ноября 2010
def new
   #assuming boats is an array 
   if boats.size > 1
       redirect_to boats_path(:user => params[:user], :boat => params[:boat]), :method => :post
   else
      #new stuff
   end
end

boats_path или любой другой объект, который вы пытаетесь создать.

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