2009-08-05 5 views
16

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

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

Как я могу переопределить это поведение по умолчанию и создать a'free form/unbound field '?

ТИА, BC

ответ

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 блока

43

Вот что из моего собственного приложения:

Доступ к нему:

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 %> 
Смежные вопросы