簡體   English   中英

Rails路線-link_to帶有參數的單個資源

[英]Rails Routes - link_to singular resource with params

因此,就路由而言,這並不是我的最佳選擇,但是我想要實現的目標似乎很簡單。 我所擁有的功能是當前只能由超級用戶訪問的功能,現在我想將該功能擴展到portal_administrator。 現在訪問該頁面,您需要一個如下所示的link_to

 = link_to('Data', portal_datum_path(current_portal.id), :id => :super_user_data_link)

通過匹配路由

 match '/portal_data/:id', :controller => 'portal_data', :action => 'show', :as => 'portal_datum'

現在,此方法很好用,您最終得到的是帶有id參數的網址。 在它路由到的頁面中使用。 實際上,有一個前置過濾器可以確保有一個ID。

  def load_portal
    @portal = Portal.find(params[:id])
  end

這將使懷疑的用戶僅通過查看URL即可查看他所處的門戶。 現在,我將其擴展到用戶,我不希望他們看到他們所在的門戶網站ID,所以我認為我將在以下內容中使用單個資源。

 = link_to('Data', portal_data_path, :id => :super_user_data_link)

與一個

 match '/portal_data' => "portal_data#show"

因此它可以路由到同一位置,但保持網址干凈。 但顯然,這項工作很重要。 即使我對之前的文件管理器進行硬編碼以接受第一個門戶,但jsut都會引發錯誤

No route matches {:controller=>"portal_data", :action=>"show"}

但是如果我在那兒耙我的路線呢?

我確定自己做錯了什么主意嗎?

我要做的就是將:id設為可選參數,例如...

match '/portal_data(/:id)'

它有效:)然后在控制器中查找...

def load_portal
  @portal = Portal.find(params[:id] || current_portal.id)
end

...如果參數中沒有一個,則為帳戶上的門戶ID。

暫無
暫無

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

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