Несколько форм на той же странице с направляющими

Таким образом, я создаю приложение для направляющих для учеников средней школы, и я поразил проблему когда дело доходит до создания пользователей.

Я хочу, чтобы студенты только смогли создать учетные записи, если они выбирают свою школу и тип в пароле их школы правильно.

Каково корректное / самый легкий способ сделать это? Если я создаю привратника к user#new действию, которое они должны передать сначала или если их способ, которым на той же странице студент может отправить формам. Можно было бы быть регулярным именем пользователя, электронной почтой, использованием пароля:

form_for @user do
  ...
end

Но затем создавая другую форму для средней школы / выбор пароля средней школы.

Идеально контроллер смог бы получить параметрические усилители формы средней школы, проверить их, затем продолжил бы создавать пользователя из пользовательских параметрических усилителей.

Является это возможное использование направляющими?

Моя установка: Направляющие 3 и Ruby 1.9.2dev

Спасибо!

6
задан ryeguy 20 March 2010 в 05:00
поделиться

3 ответа

Вы можете сделать это с помощью fields_for (http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for)

Ваше представление будет выглядеть примерно так

form_for @user do |f|
  fields_for @school do |school|
    school.text_field     :name
    school.password_field :password
  end

  f.text_field     :username
  f.text_field     :email
  f.password_field :password
  f.submit "Submit"
end

Затем в вашем контроллере, params[:user] будет представлять данные пользователя, а params[:school] будет представлять имя/пароль школы.

Затем вы можете проверить правильность пароля школы перед созданием пользователя.

9
ответ дан 8 December 2019 в 18:34
поделиться

Джраллисон прав насчет fields_for , но я бы посоветовал подумать, нужно ли делать и то, и другое в одной и той же форме.

То, что вы описываете, используя название школы и пароль, очень похоже на аутентификацию пользователя. Это может быть не «пользователь» в смысле отдельного человека, но в данном случае «пользователь» - это школа. Возможно, вам следует относиться к этому так: иметь отдельную форму входа в систему, создать сеанс, если они преуспеют (чтобы им не приходилось снова и снова вводить пароль своей школы), и делать стандартные флэш-сообщения и тому подобное, если они терпят неудачу.

На этом этапе вам нужна простая и одномодельная форма. И если позже потребуются другие функции, которые также требуют школьного пароля, вы уже на шаг впереди.

4
ответ дан 8 December 2019 в 18:34
поделиться

Я не знаком с Rails 3, но это определенно будет работать с Rails 2. Может потребоваться некоторая адаптация.

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

validates_associated :school
attr_accessible :school_password

def validate_on_create
  unless self.school_password == school.password
    errors.add :school_password, "incorrect password, please try again"
  end
end

Затем у вас может быть поле выбора в форме, например

form_for @user do |user|
  user.select :school...
  user.password_field :school_password
end
0
ответ дан 8 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: