简体   繁体   中英

Why am I getting an error with a form for a nested resource in Rails 3?

I have the following link_to:

new_vendor_review_path(@vendor)

This takes me to the uRL:

domain.com/vendors/vendor_id/reviews/new

I get the following error:

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: 

Controller for Review:

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 (model):

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

Here is from my routes.rb

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

Seems like a routing error to me. The error is saying that the method reviews_path doesn't exist. This method is usually generated by adding a resourceful route in routes.rb .

Try adding this on your routes.rb :

resources :reviews

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM