Как переместить новую форму записи на страницу показа связанных записей? - PullRequest
0 голосов
/ 11 марта 2011

У меня есть 2 таблицы: места и отзывы, где 1 место может иметь много отзывов, и отзыв принадлежит месту.В настоящее время я добавляю отзывы к объектам по ссылке на странице показа объектов на новую страницу отзывов:

venues / show.html.erb

<div class="button">
  <%= link_to 'Add a review', new_venue_review_path(@venue) %>
</div>

reviews / new.html.erb

<% form_for [@venue, @review] do |f| %>
  <p>title: <br>
  <%= f.text_field :title %></p>

  <%= submit_tag %>
<% end %>

контроллер отзывов

  def new
    @review = Review.new
  end

  def create
    @review = Review.new params[:review]
    @review.venue = @venue
    if @review.save
      flash[:notice] = 'Review added'
      redirect_to venue_path(@venue)
    else
      render :action => :new
    end
  end

контроллер объектов

class VenuesController < ApplicationController

  def index
    if
      @venues = Venue.with_type(params[:venuetypes]).with_area(params[:areas])
    else
      @venues = Venue.all
    end
  end

  def new
    @venue = Venue.new
  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])
  end

  def update
   @venue = Venue.find(params[:id])
   @venue.attributes = params[:venue]
   if @venue.save!
     flash[:notice] = 'Venue updated successfully'
     redirect_to venues_path(@venue)
   end
 end

 def show
   @venue = Venue.find(params[:id])
 end
end

маршруты

  resources :venues do
    resources :reviews
  end
end

Как переместить форму добавления нового отзыва непосредственно на страницу показа мест?Перемещение кода приводит к неопределенному методу "имя_модели" для NilClass: ошибка класса.

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 11 марта 2011

Просто добавьте @review = Review.new к действию show на вашем контроллере.Затем поместите форму прямо в ваше место проведения. # Показать файл представления.

venues_controller.rb

def show
  @venue = Venue.find(params[:id])
  @review = Review.new
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...