2014-02-19 3 views
0

У меня есть следующий код формы (несущественные детали опущены):Есть ли лучший способ назвать это поле соответствующим образом?

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { id: "payment-form" }) do |f| %> 
    <%= f.fields_for resource.paid_account do |pa| %> 
    <%= pa.collection_select :account_plan_id, @account_plans, :id, :name_with_price, {}, 
          { name: "user[paid_account_attributes][account_plan_id]" } %> 
    <% end %> 
<% end %> 

Вы можете увидеть тупую часть на 4-е строки: Я жесткое кодирование имени user[paid_account_attributes][account_plan_id]. Если я этого не сделаю, то имя, которое он получает, - user[paid_account][account_plan_id], которое не летает на внутреннем сервере.

Как я это делаю, но это похоже на взлома. Есть ли более элегантный способ?

+0

Вы добавили accepts_nested_attributes_for: paid_account в вашей модели? Он должен сделать это автоматически – DiegoSalazar

ответ

0

В 2-ой строке удалить resource. и поставить :paid_account только

<%= f.fields_for :paid_account do |pa| %> 
+0

Я пробовал это, но тогда он не привязан к ресурсу, который мне нужен. –

+0

Вы добавили 'accepts_nested_attributes_for: paid_account' в модель? – Zakwan

+0

Не обращайте внимания на мой последний комментарий - вы правы. Я как-то ошибся. Благодарю. –

Смежные вопросы