У меня есть таблица мест и предложений. У каждого места может быть много предложений.
Я бы хотел добавить предложения к объектам со страницы редактирования объектов. Пока что у меня есть это (код ниже), но оно выдает ошибку «NoMethodError in Venues # edit, неопределенный метод` имя_модели для NilClass: Class "».
страница редактирования мест
(div id = "tabs-3" - это контейнер в гармошке)
<div id="tabs-3">
<%= form_for [@venue, @offer] do |f| %>
<h2 class="venue_show_orange">Offers</h2>
<%= f.fields_for :offers do |offer| %>
<div class="add_offer">
<%= offer.text_field :title %><br>
</div>
<div class="button"><%= submit_tag %></div>
<% end %>
<% end %>
</div>
предлагает контроллер
class OffersController < ApplicationController
def new
@offer = Offer.new
end
def create
@offer = @venue.offers.create!(params[:offer])
@offer.venue = @venue
if @offer.save
flash[:notice] = 'Offer added'
redirect_to offers_path
else
render :action => :new
end
end
def edit
@offer = Offer.find(params[:id])
end
def update
@offer = Offer.find(params[:id])
@offer.attributes = params[:offer]
if @offer.save!
flash[:notice] = 'Offer updated successfully'
redirect_to offers_path(@offer)
end
end
end
диспетчер объектов
(здесь ничего не связано - я ошибаюсь?)
class VenuesController < ApplicationController
protect_from_forgery :only => [:update, :delete, :create]
load_and_authorize_resource
def new
@venue = Venue.new
5.times { @venue.venuephotos.build }
end
def create
@venue = Venue.new params[:venue]
if @venue.save
flash[:notice] = 'Venue added'
redirect_to venues_path
else
render :action => :new
end
end
def edit
@venue = Venue.find(params[:id])
5.times { @venue.venuephotos.build }
end
def update
@venue = Venue.find(params[:id])
@venue.attributes = params[:venue]
if @venue.save!
flash[:notice] = 'Venue updated successfully'
redirect_to :back
end
end
end
Любая помощь очень ценится, спасибо большое!
редактировать
страница редактирования мест
<div id="tabs-3">
<%= form_for @venue do |f| %>
<div class="edit_venue_details">
<h2 class="venue_show_orange">Offers</h2>
<%= render :partial => 'offers/offer', :collection => @venue.offers %>
<div class="clearall"></div>
<h2 class="edit_venue_sub_header">Add a new offer</h2>
<%= f.fields_for :offers do |offer| %>
<% if offer.object.new_record? %>
<p class="edit_venue">title: <br>
<%= offer.text_field :title, :class => "edit_venue_input" %></p>
<% end %>
<% end %>
</div>
<button class="submit_button" type="submit"> Save changes</button>
<% end %>
</div>
что отображается
однако, если я добавлю новое предложение, оно будет отображаться правильно: