ruby on rails - How can I add a related record whilst on its parents edit page? -



ruby on rails - How can I add a related record whilst on its parents edit page? -

i have table of venues , offers. each venue can have have many offers.

i able add together offers venues venues edit page. far have (code below) giving "nomethoderror in venues#edit, undefined method `model_name' nilclass:class" error.

venues edit page (the div id="tabs-3" container in accordion)

<div id="tabs-3"> <%= form_for [@venue, @offer] |f| %> <h2 class="venue_show_orange">offers</h2> <%= f.fields_for :offers |offer| %> <div class="add_offer"> <%= offer.text_field :title %><br> </div> <div class="button"><%= submit_tag %></div> <% end %> <% end %> </div>

offers controller

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

venues controller (nothing offer related in here - i'm going wrong?)

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

any help much appreciated much!

edit

venues edit page

<div id="tabs-3"> <%= form_for @venue |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 new offer</h2> <%= f.fields_for :offers |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>

whats beingness displayed

however if add together new offer, display correctly:

some remarks:

1) replace:

<%= form_for [@venue, @offer] |f| %>

with:

<%= form_for @venue |f| %>

because offers info updated through related venue, 1 controller action handle form.

2) if want add together unexisting offers in form, shoud instantiate them way did venuephotos

3) show venue model. should have @ least:

accepts_nested_attributes_for :offers

ruby-on-rails activerecord

Comments

Popular posts from this blog

iphone - Dismissing a UIAlertView -

intellij idea - Update external libraries with intelij and java -

javascript - send data from a new window to previous window in php -