Я слышал об этом сообществе, слушая Hypercritical, и я рад присоединиться к своему первому вопросу.Я работаю над своим первым приложением rails, и у меня возникла проблема, которую я не могу решить.Я наблюдаю за Railscast, Lynda.com и Googling в течение нескольких дней, но я все еще не могу понять, как создать форму, которая будет обновлять мои has_many: через ассоциации сразу.Позвольте мне попытаться объяснить, что я делаю.
Моя цель: Фирма, в которой я работаю, предоставляет множество «предложений по обслуживанию», и я хочу иметь возможность создавать новое предложение услуг наодна страница, и он создает контакты и другую информацию, которая связана с ней.Дополнительная информация, такая как «контакты», будет храниться в их собственных таблицах, поскольку на них могут ссылаться многие «Предложения по обслуживанию».
Проблема: Когда я отправляю форму «Услуга»Предлагаемые »поля отправляются и вводятся в базу данных, а поля для« Бизнес-разработчика »нет.Очевидно, я хотел бы, чтобы все было занесено в соответствующую таблицу и чтобы идентификаторы были связаны в соединительной таблице.Я был бы очень признателен за любую информацию, которую вы могли бы предоставить.
То, что я имею до сих пор: То, что вы видите ниже, - это предложения услуг и разработчики бизнеса.Со временем я буду добавлять контакты, фотографии и файлы, но я подумал, что начну просто и продолжу свой путь.
Модели:
class ServiceOffering < ActiveRecord::Base
attr_accessible :name, :description
has_many :business_developer_service_offerings
has_many :business_developers, :through => :business_developer_service_offerings
accepts_nested_attributes_for :business_developer_service_offerings
end
class BusinessDeveloper < ActiveRecord::Base
attr_accessible :first_name, :last_name
has_many :business_developer_service_offerings
has_many :service_offerings, :through => :business_developer_service_offerings
end
class BusinessDeveloperServiceOffering < ActiveRecord::Base
belongs_to :business_developer
belongs_to :service_offering
end
Контроллер:
def new
@service_offering = ServiceOffering.new
@service_offering.business_developers.build
end
def create
@service_offering = ServiceOffering.new(params[:service_offering])
if @service_offering.save
redirect_to(:action => 'list')
else
render('new')
end
end
Вид:
<%= form_for((@service_offering), :url => {:action => 'create'}) do |f|%>
<p>
<%= f.label :name%>
<%= f.text_field :name %>
<%= f.label :description%>
<%= f.text_field :description %>
</p>
<%= f.fields_for :business_developer do |builder| %>
<p>
<%= builder.label :first_name%>
<%= builder.text_field :first_name %>
<%= builder.label :last_name%>
<%= builder.text_field :last_name %>
</p>
<%end%>
<%= f.submit "Submit" %>
<%end%>