簡體   English   中英

Rails路由嵌套視圖

[英]Rails routing nested views

我有一個管理視圖,該視圖來自嵌套控制器,列出了來自boxer gem的所有對話,請參見此處:( Mailboxer Gem,Admin View )。

我無法正確路由。 在admin視圖中創建的鏈接轉到/ conversations / id,我需要它轉到admin / conversations / id。 在瀏覽器欄中鍵入時,這兩種路線均有效,並顯示正確的視圖。

在我的控制器中:

 # GET /admin/conversations
  # GET /admin/conversations.json
  def index
    @admin_conversations = Conversation.all.unscoped.order("updated_at desc")
  end

# GET /admin/conversations/1
# GET /admin/conversations/1.json
def show
  @conversation = Conversation.find(params[:id])
end

在我看來:

<% @admin_conversations.each do |admin_conversation| %>
  <tr>
    <td><%= admin_conversation.originator.name %> <span class="label label-default"><%= admin_conversation.originator.role.humanize %></span> </td>
    <td><%= admin_conversation.subject %> </td>
    <td><%= time_ago_in_words(admin_conversation.updated_at) %> ago</td>
    <td><%= link_to 'View Conversation', admin_conversation %></td>

  </tr>

在視圖中創建的鏈接轉到/ conversations / id,我需要它轉到admin / conversations / id。

我的管理員路線:

namespace :admin do
    resources :users
    resources :managers
    resources :conversations
    get 'enquiries/:status', to: 'enquiries#index', as: :admin_enquiries_with_status, constraints: {status: /(pending|completed|approved)/}
    resources :enquiries, except: [:destroy] do
      post :add_venue, on: :member
      post :remove_venues, on: :member
      post :approve, on: :member
    end
    resources :venues, only: [:index, :show, :destroy] do
      get :autocomplete, on: :collection
    end
    get "pages/statistics"
  end

我已經嘗試通過rails文檔來處理名稱空間路由,但是似乎無法使其正常工作。 如果我在瀏覽器欄中輸入/ admin / conversations / id的實際路線,則從正確的控制器返回顯示頁面。 我只是不確定如何正確顯示鏈接?

會話控制器路由:

 send_message POST   /conversations/send_message(.:format)    conversations#send_message
           reply_conversation POST   /conversations/:id/reply(.:format)  conversations#reply
           trash_conversation POST   /conversations/:id/trash(.:format)  conversations#trash
         untrash_conversation POST   /conversations/:id/untrash(.:format)  conversations#untrash
                conversations GET    /conversations(.:format) conversations#index
                              POST   /conversations(.:format) conversations#create
             new_conversation GET    /conversations/new(.:format) conversations#new
                 conversation GET    /conversations/:id(.:format) conversations#show

管理員會話控制器路由:

POST   /admin/conversations(.:format) admin/conversations#create
       new_admin_conversation GET    /admin/conversations/new(.:format) admin/conversations#new
      edit_admin_conversation GET    /admin/conversations/:id/edit(.:format)    admin/conversations#edit
           admin_conversation GET    /admin/conversations/:id(.:format) admin/conversations#show
                              PATCH  /admin/conversations/:id(.:format)  admin/conversations#update
                              PUT    /admin/conversations/:id(.:format)  admin/conversations#update
                              DELETE /admin/conversations/:id(.:format)  admin/conversations#destroy

好的,解決了。

<td><%= link_to 'View Conversation', [:admin, admin_conversation] %></td>

只需將:admin放進去,並在方括號中加上/ admin即可。

應該剛剛更徹底地閱讀了文檔...

暫無
暫無

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

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