我有一个型号名称“profit”,它有一个表名利润和表“product_id”,“client_id”,“grossprofit”的3列
现在在我的index.html.erb页面中,我可以选择show as
<td><%= link_to 'Show', profit %></td>
当我点击显示链接时,我转到显示页面,链接变为
http://localhost:3000/profits/1
http://localhost:3000/profits/2
我正在获取利润表的ID,但我需要在我的网址中使用product_id和client_id,如下所示
http://localhost:3000/profits/3/5
其中3将是product_id,5将是client_id
我需要做些什么更改来获取此网址?如何在控制器的show动作中从网址获取product_id和client_id?
模型之间的关联是
product: has_many profits
client: has_many profits
profit: belongs to product and client
答案 0 :(得分:1)
你在routes.rb文件中输入错误的路由请将其声明为:
resources :profits do
resources :products, :clients
end
答案 1 :(得分:1)
routes.rb
resources :profits do
get ":product_id/:client_id", :action => :show, :as => :show, :on => :collection
end
视图
<%= link_to 'Show', show_profits_path(profit.product_id, profit.client_id) %>
点击链接时的开发日志是
Started GET "/profits/5/3" for 127.0.0.1 at 2014-01-04 20:42:10 +0800
Processing by ProfitsController#show as HTML
Parameters: {"product_id"=>"5", "client_id"=>"3"}
答案 2 :(得分:0)
<强>路线强>
HarsHarl&amp; cenyongh建议,你最好看Nested Resources
您遇到的问题是您无法访问product_id
和client_id
vars,除非它们存储在会话中。因此,您必须通过URL
我会用这个:
resources :profits do
get ":product_id/:client_id", to: "show"
end
这将创建此路线:
/profits/13/5
更重要的是,它会将这些参数传递给product_id
和client_id
到show动作