2011-04-19 48 views
0

我有以下的link_to:爲什麼我在Rails 3中獲取嵌套資源表單的錯誤?

new_vendor_review_path(@vendor)

這需要我的網址:

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 

這裏是我的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 
+0

這可能是因爲你要的網址說,404頁找不到,嗯? – Bastardo 2011-04-19 18:06:09

+0

您的供應商模式內是否有'accep_nested_attributes_for:reviews'? – brettish 2011-04-19 18:15:55

+0

@brettish - 是的,我.... – Angela 2011-04-19 19:19:08

回答

0

似乎是一個路由錯誤給我。錯誤是說方法reviews_path不存在。此方法通常通過在routes.rb中添加resourceful route來生成。

嘗試在你的routes.rb添加此:

resources :reviews 
+0

是的,那固定它....但後來我有資源:兩次審查,一個如上所述,一個嵌套......是嗎? – Angela 2011-04-20 05:24:43

+0

@Angela:我認爲它應該是嵌套在'vendors'中的'reviews'。 – htanata 2011-04-20 06:26:12

+0

是的,我擁有它......但現在我也有它獨立 - 是嗎? – Angela 2011-04-20 06:47:18