Подтвердить что ты не робот

Rails - Пользовательский ввод для нескольких моделей в одной форме - Как

Это в основном вопрос вложенной формы, хотя и только одно поле, которое принадлежит родительской модели. Моя форма ввода данных собирает данные для модели - однако мне также нужно собрать еще один элемент/значение данных (UserID), который фактически переходит в родительскую запись, которая будет создана с помощью записи подробностей.

AFAIK Rails ожидает, что каждое поле формы будет сопоставлено с моделью, и мне нужно создать поле ввода несвязанных данных, которое я буду использовать отдельно.

Как я могу переопределить это поведение по умолчанию и создать "свободное поле формы/несвязанного"?

ТИА, BC

4b9b3361

Ответ 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