2016-05-22 3 views
0

を足場後、私はb_pageという名前の足場を作って、私はバイオの移行を作成しました:routes.rbをルビーオンレールは

def biopage 
@b_pages = BPage.all 
end 

resources :b_pages do 
collection do 
    get 'biopage' 
end 
end 
bio.html.erbで

<div class="jumbotron"> 
<h1>Bio of :</h1> 
<h2><b><%= @b_page.Bpage_name %></b></h2> 
<h3><%= @b_page.user.email %></h3> 
</div> 
<%= @b_page.bio %> 

が、私はまだエラーを取得:

のActiveRecord :: BPagesControllerの#ショー でRecordNotFoundは= biopage ハイライト 'ID' とBPAGEが見つかりませんでした:すべての

 @b_page = BPage.find(params[:id]) 
+0

あなたのコントローラで@b_pagesを持っているとビューで@biopageにアクセスしようとしているを持っていると思います。 Moreso、 'all'を使うと、それをループする必要があります。質問をより明確にしてください。 – mokayode

+0

あなたはあなたのparamsのidキーを使って '@ b_page'に束縛していますが、urlを探すためにあなたのルートを設定していません。それを 'get 'biopage:id''に変更してみてください – Haymaker87

答えて

0

まず、これは私には少し奇妙に思える:

resources :b_pages do 
    collection do 
    get 'biopage' 
    end 
end 

のようになります。/b_pages/biopageのようなルートになります。あなただけのような何かしたいと思うかもしれません:

resources :b_pages, except: :show 
get '/biopage/:id'', to: 'b_pages#show' 

この方法では、あなたのbiopageルートがshowコントローラメソッドになりますが、あなたはまだで動作するように他のb_pagesのルートを持っています。

BPageオブジェクトが表示されていないため、ActiveRecord::RecordNotFoundエラーメッセージが表示されるため、showメソッドが不平を言っています。上に書いた経路が:idを使用していることに注目してください。これは、通常、showアクションはフロントエンドに表示するためにいくつかのレコードのIDを取るためです。 biopageを使用してshowメソッドにリンクする場合は、実際に表示するオブジェクトを返す必要があります。それ以外の場合は、b_pagesリソースに干渉しない、全く異なるコントローラメソッドbiopageを作成する必要があります。路線でこのような何か:

resources :b_pages 
get "/biopage/:id", to: "b_pages#your_method" 

とコントローラにあなたが

class BPages < ApplicationController 
    # index, show, destroy, etc. here... 

    def your_method 
    # Get whatever object you want returned here. 
    end 
end 
関連する問題