0

views/abouts/ に「index.html.haml」と「history.html.haml」がある場合。
基本的な html ページである abouts#history にアクセスするにはどうすればよいですか。

ログから、このエラーが表示されます。ショーとして処理していると思われます。どうすればよいですか?:

  Processing by AboutsController#show as HTML
  Parameters: {"id"=>"history"}
  About Load (0.3ms)  SELECT `abouts`.* FROM `abouts` WHERE (`abouts`.`id` = 0) LIMIT 1

  ActiveRecord::RecordNotFound (Couldn't find About with ID=history):

ルート.rb

scope() do
  resources :abouts, :path => 'about-us' do
    match 'about-us/history' => "about-us#history"
  end
end

abouts_controller.rb

def history
  respond_to do |format|
    format.html

  end
end
4

1 に答える 1

2

いくつかの問題。まず、一致する必要があります'history'('about-us/history'ルートはネストされているため、'about-us/'パーツは自動的に含まれます)。次に、オプションを使用して、ルートがコレクションのメンバーではなく、コレクションと一致する必要があることを指定する必要があり:on => :collectionます。最後に、一致をルーティングする必要があります'abouts#history'(ルーティング時に使用するパス文字列に関係なく'about-us#history'、コントローラーの名前が付けられるため)。abouts

だからこれを試してください:

resources :abouts, :path => 'about-us' do
  match 'history' => "abouts#history", :on => :collection
end

また、 はすべてのHTTP リクエストmatchに一致することに注意してください:および. HTTP リクエスト タイプをリクエストだけに絞り込むには、ではなくを使用することをお勧めします。POSTGETgetmatchGET

resources :abouts, :path => 'about-us' do
  get 'history' => "abouts#history", :on => :collection
end

それが役立つことを願っています。

于 2012-12-22T05:18:21.987 に答える