我正在尝试使用friendly_id 从资源路由到嵌套资源。下面是代码:
路线.rb:
resources :products do
resources :reviews, except: [:index]
end
耙路线:
new_product_review GET /products/:product_id/reviews/new(.:format)
控制器:
@review = Review.new(product_id: params[:product_id])
特定产品页面上的查看按钮:
<%= link_to(raw("<button>Write a Review</button>"), new_product_review_path(@review.product_id, @review) ) %>
产品网址:
http://localhost:3000/products/light-saber #just kidding
但是,我收到以下错误:
undefined method `product_id'
我在这里做错了什么?
更新 - - -
现在在我的控制器中,我有:
before_filter :setup_product
@review = @product.reviews.new
def setup_product
@product = Product.find(params[:product_id])
end
我仍然遇到同样的错误。我的问题明确是,因为我的 URL 没有传入整数 ID,因为我使用了友好 ID,所以参数是否结构化,以便控制器可以像我想要的那样检索产品?
更新:
现在我收到此错误:
No route matches {:action=>"new", :controller=>"reviews", :product=>nil}
当我将产品页面中的代码更改为:
<%= link_to(raw("<button>Write a Review</button>"), new_product_review_path(@review) ) %>