Почему я получаю сообщение об ошибке с формой для вложенного ресурса в Rails 3? - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть следующий link_to:

new_vendor_review_path (@vendor)

Это приведет меня к uRL:

domain.com / vendors / vendor_id / reviews / new

Я получаю следующую ошибку:

undefined method `reviews_path' for #<#<Class:0xb6f01ca0>:0xb6eff658>
Extracted source (around line #1):

1: <% semantic_form_for [@vendor, @review] do |f| %>
2:   <%= f.inputs %>
3:   <%= f.buttons %>
4: 

Контроллер для обзора:

4   def new
 15     @vendor = Vendor.find_using_slug(params[:vendor_id])
 16     @review = @vendor.reviews.build
 17     @review.user_id = current_user.id if user_signed_in?
 18   end
 19 
 20   def create
 21     @vendor = Vendor.find(@review.vendor_id)
 22     @review = @vendor.reviews.build(params[:review])
 23     if @review.save
 24       flash[:notice] = "Successfully created review."
 25       redirect_to @review
 26     else
 27       render :action => 'new'
 28     end
 29   end

Review.rb (модель):

1 class Review < ActiveRecord::Base
  2   attr_accessible :title, :summary, :vendor_id, :user_id, :tag_list, :competitor_list
  3   is_sluggable :title
  4   acts_as_voteable
  5   acts_as_commentable
  6   
  7   validates :title, :presence => true, :length => {:minimum => 10, :maximum => 50}
  8   validates :user_id, :presence => true
  9     
 10   belongs_to :user
 11   belongs_to :vendor

Вот из моих маршрутов. 1018

2   devise_for :users
  3 
  4   match 'reviews/vote_up' => 'reviews#vote_up'
  5 
  6   resources :users
  7   resources :reviews
  8   
  9   resources :vendors do
 10     resources :reviews, :shallow => true
 11   end

1 Ответ

0 голосов
/ 20 апреля 2011

Похоже, ошибка маршрутизации для меня.Ошибка говорит о том, что метод reviews_path не существует.Этот метод обычно генерируется добавлением ресурсоемкого маршрута в routes.rb.

Попробуйте добавить это на routes.rb:

resources :reviews
...