2017-02-22 122 views
0

這讓我瘋狂......Link_to幫手:嵌套路線

我已經用標準路由構建了一些測試應用程序,但是這次想要在b中嵌套b。所以這樣的(a和b是爲了便於實施例)在 'B控制器' 我有索引定義爲

def index 
@b = B.all 
end 

在索引頁我有

<p>B index</p> 
<ul class="b"> 
    <% @b.each do |b| %> 
    <li> 
    <%= link_to b.name, b %> 
    </li> 
<% end %> 

resources :a do 
resources :b 
end 

控制器PARAMS設置

def B_params 
    params.require(:b).permit(:name, :description, :this, :that, :a_id) 
    end  

所以錯誤消息是當查看index.html'未定義的方法b_path'

我很確定它的路由問題,因爲我所有的其他索引頁面正常工作。那麼路由嵌套b_path的正確方法是什麼?

我已經試過

get '/a/:id/b', to: 'b#index' -----fails 
get '/a/:a_id/b', to: 'b#index' ----fails 
get '/b', to: 'b#index' ----- not surprising fails 

所以我失去了什麼。是否有其他事情做,或者你巢資源的鏈接,一旦

感謝

回答

0

行,所以我設法後什麼感覺像一個永恆摸不着頭腦的另一種方式。以防萬一誰有興趣

在link_to b.name語句之後立即引用'b'的錯誤。它應該是...

<p>B index</p> 
<ul class="b"> 
<% @b.each do |b| %> 
<li> 
<%= link_to b.name, a_b %> 
</li> 

所以要解釋一下,我的理解它。一旦嵌套的三個重要文件的routes.rb,你需要設置索引的正確路線......本例中是

get '/a/:a_id/b', to: 'b#index' 

這個來自運行軌道路線,看到正確的路徑回到那裏。

然後在「B控制器」你變量聲明爲正常

def index 
    @b = B.all 
end 

然後在視圖/ B/index.html.erb調用變量,但重要的是引用新B#索引路徑

<% @b.each do |b| %> 
    <li> 
    <%= link_to @b.name, a_b_url %> 
    </li> 
<% end %> 

我敢肯定,我理解的並不完整,因爲它可以,但是我已經得到了它的工作,以便開始向上。快樂的日子