Я пытаюсь связать эти модели с действием по созданию бара.
Я знаю, что и бар, и тип являются нулевыми объектами, которые еще не созданы,но почему, рубин не понимает, что все, что я хочу, это просто связать эти ноль объектов?
Итак, я искал ответы, но никто из них не объяснил, почему эта ошибка: Called idдля nil, который по ошибке будет равен 4 - если вы действительно хотите идентификатор nil, используйте object_id
в этой ситуации.
Пользователь - Модель
has_one :bar
Бар - Модель
belongs_to :type
belongs_to :user
Тип - Модель
has_many :bars
Бар -Контроллер
def new
@bar = Bar.new
end
def create
@bar = current_user.build_bar(params[:bar].merge(:type_id => @type.id))
if @bar.save
flash.now[:success] = "Wohoo!"
redirect_to @bar
else
render :new
end
end
New_bar - Просмотр
<div class="block">
<%= render 'shared/flash_messages' %>
<%= form_for @bar, :url => bars_path, :method => :post do |b| %>
<ul>
<li><%= b.label :name %><%= b.text_field :name %></li>
<%= b.fields_for :type do |t| %>
<li>pirate:<%= t.radio_button :style, "pirate" %></li>
<li>pub:<%= t.radio_button :style, "pub" %></li>
<li>american:<%= t.radio_button :style, "american" %></li>
</ul>
<% end %>
<%= b.submit "create", :class => "sec button" %>
<% end %>
</div>