class User < ActiveRecord::Base
has_many :user_services
end
class UserService < ActiveRecord::Base
attr_accessible :service_id, :user_id, :value
belongs_to :user
belongs_to :service
end
例如,我有5项服务:Google,Facebook,Youtube等。
当我编辑用户时,我应该看到在services表中创建的每个服务的表单。
Google'输入您的帐户名称'
Facebook'example_account_name'
Youtube'输入您的帐户名'
如果用户已输入名称,我可以编辑它,如果名称为空,我可以创建它。如果我添加另一个服务,我必须看到另一个text_field用于编辑它的值。什么是最好的解决方案?
答案 0 :(得分:1)
find_or_initialize
<%= form_for @user do |f| %>
...
<% @services.each do |service| %>
...
<%= f.fields_for :user_services, service.user_services.find_or_initialize_by_user_id(@user.id) do |user_service| %>
<%= user_service.label :value, "Set your id" %>
<%= user_service.text_field :value %>
<%= user_service.hidden_field :user_id, :value => @user.id %>
<% end %>
<% end %>
<p><%= f.submit "Submit" %></p>
<% end %>
答案 1 :(得分:0)