Rails link_to 将 :id 从 show 传递到另一个控制器操作
Rails link_to pass :id from show to another controller action
我正在 show.html.erb 中查看 1 件产品,下面有一个 link,上面写着 "View other products from this company"。此 link_to 连接到同一控制器中的另一个非 restful 操作,该控制器从数据库中检索同一公司的其他产品,如 show.html.erb.
中所示
能否link_to 将当前产品的 :id 传递给正在渲染的 show 动作?我是 rails 的新手,如果问题没有意义,请告诉我。我不确定是否也需要定义路线。谢谢。
products_controller.rb
def show
@company_products = Product.by_company
end
show.html.erb
<%= link_to "View other products from this company", company_products_path(:anchor => "#{@company_products}") %>
routes.rb
get '/company_products_' => 'products#company_products'
您想做这样的事情:
@company_products.each do |company|
link_to "View other products from this company", products_path(company)
end
路线:
resources :products
我最终通过 link_to 将 show 中对象的 :id 传递给非 restful 操作来解决它。
如果 #show 中的整个 @company_products 可以按原样通过,我愿意接受建议,因为我首先要查找该公司是否有任何其他产品,如果有,则通过id only in link_to and in controller#company again 运行 查询以获取要显示的所有产品的相同数据。所以运行两次相同的查询不是DRY。
controller#show 与最初发布的内容相同。
routes.rb
resources :products do
get :company, on: :member
end
show.html.erb
<%= link_to "View other products from #{@company_name}", company_product_path(@product.company_id) %>
控制器#公司
def company
@products_of_company = Product.where(company_id: params[:id])
end
现在company.html.erb,列表只是显示。
我正在 show.html.erb 中查看 1 件产品,下面有一个 link,上面写着 "View other products from this company"。此 link_to 连接到同一控制器中的另一个非 restful 操作,该控制器从数据库中检索同一公司的其他产品,如 show.html.erb.
中所示能否link_to 将当前产品的 :id 传递给正在渲染的 show 动作?我是 rails 的新手,如果问题没有意义,请告诉我。我不确定是否也需要定义路线。谢谢。
products_controller.rb
def show
@company_products = Product.by_company
end
show.html.erb
<%= link_to "View other products from this company", company_products_path(:anchor => "#{@company_products}") %>
routes.rb
get '/company_products_' => 'products#company_products'
您想做这样的事情:
@company_products.each do |company|
link_to "View other products from this company", products_path(company)
end
路线:
resources :products
我最终通过 link_to 将 show 中对象的 :id 传递给非 restful 操作来解决它。
如果 #show 中的整个 @company_products 可以按原样通过,我愿意接受建议,因为我首先要查找该公司是否有任何其他产品,如果有,则通过id only in link_to and in controller#company again 运行 查询以获取要显示的所有产品的相同数据。所以运行两次相同的查询不是DRY。
controller#show 与最初发布的内容相同。
routes.rb
resources :products do
get :company, on: :member
end
show.html.erb
<%= link_to "View other products from #{@company_name}", company_product_path(@product.company_id) %>
控制器#公司
def company
@products_of_company = Product.where(company_id: params[:id])
end
现在company.html.erb,列表只是显示。