За последние пару недель я попал в рельсы и столкнулся с проблемой, на которую не могу найти ответ.Я чувствую, что это, вероятно, что-то действительно простое, но это сводит меня с ума, поэтому я надеюсь получить руководство ...
Я вставляю данные из 1 формы в 2 модели.одна модель называется Venue, а другая модель называется Events.Это ассоциация «один ко многим», где несколько мероприятий принадлежат объектам, а объекты имеют множество мероприятий.
модели:
class Venue < ActiveRecord::Base
has_many :events
accepts_nested_attributes_for :events
end
class Event < ActiveRecord::Base
belongs_to :venue
scope :upcoming, where('date >= ?', Date.today)
end
контроллер:
class EventsController < ApplicationController
def new
@venue = Venue.new
end
def create
@venue = Venue.new(params[:venue])
if @venue.save
render :inline => "Success"
else
render('new')
end
end
end
форма:
<%= form_for(@venue, :url =>{:action => 'create'}) do |f| %>
Artist ID<br />
<%= fields_for :event do |event_fields| %>
<%= event_fields.text_field :artist_id %><br/><br />
<% end %>
Venue City<br />
<%= f.text_field(:city) %> <br /><br />
Venue Name<br />
<%= f.text_field(:name) %><br/><br/>
<div class="actions">
<%= submit_tag "Save", :class => "btn primary" %>
</div>
<% end %>
вывод журнала:
Started POST "/events" for 127.0.0.1 at 2012-02-17 19:57:24 -0500
Processing by EventsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"p3llx5KsYn6gyjP9g2qwzXr+0rjh3h/o34h/iqvqjRo=", "event"=>{"artist_id"=>"124"}, "venue"=>{"city"=>" Boston", "name"=>"Bostons Fa'v"}, "commit"=>"Save"}
(0.2ms) BEGIN
SQL (0.8ms) INSERT INTO "venues" ("address_1", "address_2", "capacity", "city", "country", "created_at", "created_by", "name", "state", "updated_at", "url", "zip") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) RETURNING "id" [["address_1", nil], ["address_2", nil], ["capacity", nil], ["city", " Boston"], ["country", nil], ["created_at", Sat, 18 Feb 2012 00:57:24 UTC +00:00], ["created_by", nil], ["name", "Bostons Fa'v"], ["state", nil], ["updated_at", Sat, 18 Feb 2012 00:57:24 UTC +00:00], ["url", nil], ["zip", nil]]
(0.4ms) COMMIT
Rendered inline template (0.2ms)
Completed 200 OK in 5ms (Views: 0.6ms | ActiveRecord: 1.4ms)
Как вы можете видеть, он не отказывает, но он только подчиняется 1 модели.Насколько я понимаю, добавив «accepts_nested_attributes_for: events», которую модель Venue знает, чтобы затем перейти к моей таблице событий, создать новое событие с данными о событиях, которые я предоставляю (в этом примере просто artist_id), а затем автоматически вставить поле id из моеготаблица мест в venue_id.
Чем больше я думаю об этом здесь, тем больше я думаю, что, возможно, пропускаю шаг и ... Если у кого-то есть секунда, я был бы рад услышать ваш мыслительный процесс по этому вопросу.
Спасибо