我是铁道新手。我创建了一个带有控制器products_controller.rb的演示项目,当我输入这个URL http://localhost:3000/products
时,我可以看到数据库中的现有产品列表。但是我需要创建一个名为“display”的新页面,url应该是http://localhost:3000/products/display
我的产品应该显示的位置。我怎样才能做到这一点?
答案 0 :(得分:1)
如果要使用辅助操作而不仅仅是索引操作的其他路径,则需要对集合执行自定义操作:
你的routes.rb 中的
resources :products do
collection do
get :display
end
end
然后在您的products_controller.rb
中class ProductsController
def display
@products = Product.all
end
end
然后在你的app / views / products文件夹中创建一个display.html.erb / haml / ...并填写你想要的任何内容: - )
如果您只想要索引操作的其他路径,则可以添加自定义路径。路线指南更好地解释了这一点,所以我只是链接到它:http://guides.rubyonrails.org/routing.html
答案 1 :(得分:1)
我想您只想为产品的索引页面设置一个自定义网址。
您可以通过以下方式实现这一目标 -
你的routes.rb 中的
get "/products/display" => "products#index"
resources :products
请记住将资源放在自定义路由条目下方。
我希望这可以帮助你!!
答案 2 :(得分:0)
你可能正在寻找Rails'RESTful routing structure:
每次在resources :controller
文件中使用routes
时,都会创建7 routes for that controller:
- 索引
- 新
- 创建
- 修改
- 更新
- 显示
- 破坏
对我而言,您似乎正在尝试使用show
方法:
显示强>
Rails'show
方法基本上在页面上显示了一个特定的对象,如下所示:
/products/234
这会自行显示产品
您对此进行编码的方式非常简单:
#app/controllers/products_controller.rb
def show
@product = Product.find(params[:id])
end
然后,您可以使用此URL helper:
链接到此内容<%= link_to "View", products_path(product.id) %>
这将允许您显示您点击的产品