0

link_to「Category」リソースがあり、メソッドと_pathルートを使用して、その index.html.erb ファイルで Categories#show にリンクしようとしています。ブラウザでインデックスを表示すると、次のエラーが表示されます。

Routing Error No route matches {:action=>"show", :controller=>"categories"}

しかし、Categories コントローラーで定義された show アクションがあり、の URI 部分を削除するlink_toと、例外がスローされることなくインデックスが正常に表示されます! URI のどこが間違っているのかわかりません。

/categories/index.html.erb は次のとおりです。

<h1>My Links</h1>

<% @categories.each do |c| %>
    <h2><%= link_to "#{c.category}", category_path %></h2>
    <p><%= c.description %></p>
<% end %>

<%= link_to "Add new category", new_category_path %>

/categories/show.html.erb は次のとおりです。

<h1><%= @category.category %></h1>

<p><%= @category.description %></p>

<p><%= link_to "Back to index", root_path %></p>

/config/routes.rb は次のとおりです。

LinkManager::Application.routes.draw do

  resources :categories do
    resources :links
  end

  root :to => 'categories#index'

以下は /controllers/categories_controller.rb の一部です:

class CategoriesController < ApplicationController

    def index
        respond_with(@categories = Category.all)
    end


    def show
        @category = Category.find(params[:id])
    end

そして、これが実行の結果ですrake routes(ここでうまくフォーマットする方法がわからなかったので、ペーストビンに入れてください):rake routes

誰が何が間違っているかを見つけることができますか? ここで他の多くの同様のルーティングの質問を見てきましたが、それらから解決策を得ることができませんでした. ありがとうございました。

4

2 に答える 2

2

置き換えてみてください:

<h2><%= link_to "#{c.category}", category_path %></h2>

と:

<h2><%= link_to "#{c.category}", category_path(c) %></h2>

見る?のカテゴリを指定する必要がありますcategory_path

または、魔法を使うだけです。

<h2><%= link_to "#{c.category}", c %></h2>

ちなみに、ここでの補間の目的は何"#{c.category}"ですか?単にc.category十分ではないでしょうか?

于 2012-11-12T16:55:48.287 に答える
0

まあ、他のルートをアクションショーに追加する場合は、次のようにします。

ブラウザでこれを行います:

localhost:3000/categories/show

そしてあなたのroutes.rb

match "/categories/show/:id" => categories#show

ruby のバージョンと rails のバージョンは?

于 2012-11-12T16:53:57.267 に答える