Rails - Пользовательский ввод для нескольких моделей в одной форме - Как
Это в основном вопрос вложенной формы, хотя и только одно поле, которое принадлежит родительской модели. Моя форма ввода данных собирает данные для модели - однако мне также нужно собрать еще один элемент/значение данных (UserID), который фактически переходит в родительскую запись, которая будет создана с помощью записи подробностей.
AFAIK Rails ожидает, что каждое поле формы будет сопоставлено с моделью, и мне нужно создать поле ввода несвязанных данных, которое я буду использовать отдельно.
Как я могу переопределить это поведение по умолчанию и создать "свободное поле формы/несвязанного"?
ТИА,
BC
Ответы
Ответ 1
Вот что-то из моего собственного приложения:
Доступ к нему:
params[:company] and params[:user]
Контроллер:
@company = Company.new
@user = User.new
Вид:
<% form_for @company, :url => companies_path do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :website %><br />
<%= f.text_field :website %>
</p>
<hr />
<% fields_for @user do |u| %>
<p>
<%= u.label :email %><br />
<%= u.text_field :email %>
</p>
<p>
<%= u.label :username %><br />
<%= u.text_field :username %>
</p>
<p>
<%= u.label :password %><br />
<%= u.password_field :password %>
</p>
<p>
<%= u.label :password_confirmation %><br />
<%= u.password_field :password_confirmation %>
</p>
<% end %>
<p>
<%= f.submit "Submit" %>
</p>
<% end %>
Ответ 2
Для "магии" используется форма <= > сопоставление модели form_for
. (http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html)
Если вам нужно что-то из текущей модели, попробуйте использовать http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html
С этим вы можете добавлять теги отдельно от модели, например
radio_button_tag
внутри блока form_for