[英]How to access nested resource parameters from parent controller in Ruby on Rails?
我開始編寫一個應用程序來審查書籍,文章等(型號名稱:Piece),並可以選擇查看章節或較小的部分(章節,子章節和子章節模型)
我希望能夠生成Piece的一般概述,其中所有嵌套的Sections,Subsections和Subsubsections及其屬性將在一個視圖中列出。 所以我的routes.rb文件如下所示:
resources :pieces do
resources :sections do
resources :subsections do
resources :subsubsections
end
end
end
從那以后我學到的是草率但現在對我來說太遲了。 現在,我已經能夠從子子部分執行此操作,因為它可以訪問所有父參數(piece_id,section_id等)。 但這意味着我必須將樹跳到子視圖部分視圖然后從那里開始,而我希望能夠從Piece控制器訪問所有這些參數,以便我可以直接從Piece視圖鏈接到更多總體概述,無需一路走下去。
如果這是一個簡單的問題我很抱歉,我最近才開始。
我的模特喜歡這樣:
class Subsubsection < ActiveRecord::Base
belongs_to :subsection
end
class Subsection < ActiveRecord::Base
belongs_to :section
has_many :subsubsections
end
class Section < ActiveRecord::Base
belongs_to :piece
has_many :subsections
end
class Piece < ActiveRecord::Base
has_many :sections
has_many :links
end
我現在訪問概述的方式是使用subsubsections控制器的索引操作:
def index
@piece = Piece.find(params[:piece_id])
@section = @piece.sections.find(params[:section_id])
@subsection = @section.subsections.find(params[:subsection_id])
end
我的視圖像這樣訪問它:
<p><%= link_to "'General Piece Overview", piece_section_subsection_subsubsections_path(@piece, @section, @subsection), class: 'section_name' %></p>
下面是該項目的鏈接,以防它有助於:
你的問題有一些內部緊張; 你說你想從PieceController
訪問嵌套參數,但如果請求已被路由到PieceController
,那么這些嵌套參數將不會出現。 當存在嵌套參數時,請求將路由到請求提供參數的最特定控制器類。
如果問題可以PieceController
“怎樣,從PieceController
中我可以生成像目錄一樣的東西?” 答案看起來像這樣。
在PieceController
:
def show
@piece = Piece.find(params[:id]).include(sections: {subsections: :subsubsections}})
end
在app/views/pieces/show.html.erb
<% @piece.sections.each do |section| %>
<%= link_to piece_section_path(@piece, section), section.title %>
<% section.subsections.each do |subsection| %>
<%= link_to piece_section_subsection_path(@piece, section, subsection), subsection.title %>
<% subsection.subsubsections.each do |subsubsection| %>
<%= link_to piece_section_subsection_subsubsection_path(@piece, section, subsection, subsubsection), subsubsection.title %>
<% end %>
<% end %>
<% end %>
<% end %>
這做了一些假設,但希望這個想法很清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.