2013-09-08 1 views
0

Я новичок в Ruby on Rails. Я видел это в файле resources_controller, когда вы вызываете resources#new, он приземляется на файл new.html.haml, который содержит форму. Когда я нажимаю на кнопку Submit, она перенаправляет мне функцию create вышеуказанного файла resources_controller.rb. Может ли кто-нибудь объяснить мне, как? На самом деле я хочу сделать что-то вроде этого:Перенаправление из новой функции в контроллер ресурсов

Я хочу создать нового ученика только в том случае, если ученик с заданным номером рулона не существует. Для этого new.html.haml содержит форму, в которой имеется только одно поле для номера рулона, если ученик с номером рулона не существует, следует называть новый haml, где будет другая форма, в которой каждый будет вводить данные о студенте и только после представление этой последней формы должно быть вызвано. И когда студент уже выходит, поля формы должны заполняться автоматически.

Я не могу понять, как это сделать, потому что всякий раз, когда я нажимаю кнопку отправки в форме в new.html.haml, она перенаправляет меня всегда на создание.

+0

будет лучше, если вы добавили код на вопрос, чтобы получить помощь –

ответ

0

Вы можете просто добавить код в верхнюю часть ресурсов # создать функцию, чтобы проверить, соответствует ли номер существующей записи или нет.

В случае, если он соответствует существующему, вы перенаправляете пользователя на соответствующую страницу редактирования (это будет выглядеть как/resources /: id/edit), чтобы он мог заполнить расширенную форму.

В случае, если это новый рекорд, вы продолжаете регулярное лечение.

Таким образом, вы должны добавить код, который выглядит, как этот

resources_controller.rb

def create 
    if !(resource = Resource.find(params[:id])).blank? 
    redirect_to edit_resource_url(resource) 
    end 
    ... 
+0

Вашего ответа частично, потому что, когда ресурс не существует, мне нужно перенаправить на другую форму, где пользователь будет вводить информацию о деталях ресурсов, а затем передача этой формы перенаправит пользователя для создания функции контроллера. Я не понимаю, как передача последней формы будет перенаправлять пользователя на создание. – Joy

+0

, если ресурс существует, вы можете перенаправить на представление, которое имеет другую форму, которую вы можете создать самостоятельно и в строке form_for, установить атрибут следующим образом:: controller => 'resources',: action => 'your_custom_action', тогда вы нужно определить свою функцию в контроллере «def your_custom_action ...», и, возможно, на маршрутах вам нужно будет добавить новый маршрут к этой функции. – amine

+0

было ли это ясно? и это сработало? – amine