เมื่อฉันพยายามสมัครรับข้อมูลผลิตภัณฑ์โดยการคลิกลิงก์:
<%= link_to "Subscribe", :controller => "products", :action => "subscribe_product", :id => product.id, :method => :post %>
ฉันได้รับข้อผิดพลาดนี้และสังเกตเห็นว่าพารามิเตอร์ไม่ถูกต้อง
ActiveRecord::RecordNotFound in ProductsController#show
Couldn't find Product with id=subscribe_product
{"id"=>"subscribe_product", "method"=>"post"}
วิธีการ Subscribe_product ของฉันใน ProductsController ของฉันคือ:
def subscribe_product
@product = Product.find(params[:id])
@product.subscriptions.create(:subscriber_id => current_user.id)
end
เส้นทางของฉัน:
resources :products do
post :subscribe_product, :on => :collection
end
เหล่านี้คือสมาคม:
class User
has_many :products
has_many :subscriptions, :foreign_key => :subscriber_id
class Product
belongs_to :user
has_many :subscriptions, :as => :subscribable
class Subscriptions
belongs_to :subscriber, :class_name => "User"
belongs_to :subscribable, :polymorphic => true
ผู้ใช้สมัครสมาชิกในคอนโทรลเลอร์อื่น:
PagesController
def index
@product_history = current_user.products
end
end
pages/index.html.erb
<% for product in @product_history %>
<%= product.name %>
<%= product.price %>
<%= link_to "Subscribe", :controller => "products", :action => "subscribe_product", :id => product.id, :method => :post %>
<% end %>
เหตุใดวิธีดำเนินการของฉันจึงถูกมองว่าเป็น ID แทน