簡體   English   中英

帶有參數的Rails中更好的路線

[英]Better routes in rails with params

我一直在Rails中開發電影應用程序。 我有演員的控制器/視圖。 當將參數傳遞給actors控制器時,我希望URL很漂亮。 現在看起來像這樣: http://localhost:3000/actors/show?actor=Hayley+Atwell ,我希望它看起來像/actors/show/Hayley+Atwell/actors/Hayley+Atwell

我該怎么做呢? 我在電影視圖中的鏈接是:

<%= link_to a.name, {:controller => 'actors', :action => 'show', :actor => a.name}, :class => "label label-default" %>

我的routes.rb現在像這樣:

get 'actors/show'

我建議您使用friendly_id gem。 它完全可以滿足您的需求!

https://github.com/norman/friendly_id

您可以在./config/route.rb文件中使用以下命令:

get '/actors/:actor', to: 'actors#show'

我將給出一系列重構建議,如下所示:

  • 嘗試使用演員的ID而不是名字
  • 將路徑更改為:獲取“ / actors / show /:id”,更改為:“ actors#show”

然后,您現在可以將視圖中的鏈接更改為:

<%= link_to a.name, {:controller => 'actors', :action => 'show', :id => a.id}, :class => "label label-default" %>

注意:路線:id中的:部分表示可以將其交換為任何內容,並且該位置出現的任何內容都將被解釋為id 因此,在/actors/show/7 ,actor的ID為7,您現在可以在控制器動作中找到具有該id的actor,並對其進行任何操作。

如果我是對的,那么無論如何,您都嘗試創建RESTful路由。

因此,我建議您在路線中使用Rails的resources方法

Rails.application.routes.draw do
  resources :actors   # If you want only the :show action than add:
                      # , only: [:show]
end

這會自動為您創建正確的路線。

要將names放入URL中,應使用friendly_id gem 它有一個很棒的社區,並且經過了很好的測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM