1

投稿のインデックスがあり、それをスライドのインデックスにリンクしたいのですが、何らかの理由でこのエラーが発生し続けます

No route matches {:controller=>"slides"}

これとリンクすると

<%= link_to 'Show Slides', post_slides_path(@post) %>

投稿編集ビューアーで上記の同じリンクを使用すると、問題なく動作するようです....何か提案はありますか?

私は基本的にこれにリンクしたいと思います....../posts/:id/slides 投稿の私のテーブルから

ルート.RB

resources :posts do
    resources :slides
end

ポストモデル

class Post < ActiveRecord::Base
  attr_accessible :text, :title

  has_many :slides, :dependent => :destroy

  def self.search(search)
    if search
      where('Title Like ?' , "%#{search}%")
    else
      scoped
    end
  end

スライドモデル

class Slide < ActiveRecord::Base
  belongs_to :post

ポストインデックスビュー

<table id="posts" class="table table-striped table-bordered">
  <thead>
   <tr>
     <th>Title</th>
     <th>Description</th>
   </tr>
 </thead>
 <tbody>
   <% @posts.each do |post| %>
     <tr>
       <td><%= link_to 'Show Slides', post_slides_path(@post) %>
       <td><%= link_to 'Edit', :action => :edit, :id => post.id %></td>
       <td><%= link_to 'Destroy', { :action => :destroy, :id => post.id }, :method => :delete, :confirm => 'Are you sure?' %></td>
     </tr> 
   <% end %>
 <tbody>
<% end %>
</table>

ポストコントローラー

class PostsController < ApplicationController

  def new
    @post = Post.new
  end

  def show
    @post = Post.find(params[:id])
  end

  def index
    @posts = Post.search(params[:search]).paginate(:per_page => 10, :page =>    params[:page])
  end

  def edit
    @post = Post.find(params[:id])
  end

スライドコントローラー

class SlidesController < ApplicationController

  def index
    @post = Post.find(params[:post_id])
    @slides = @post.slides.all
  end

  def show
    @post = Post.find(params[:post_id])
    @slide = @post.slides.find(params[:id])
  end

  def new
    @post = Post.find(params[:post_id])
    @slide = Slide.new
  end

  def edit
    @post = Post.find(params[:post_id])
    @slide = Slide.find(params[:id])
  end
4

1 に答える 1

1

post_slides_path は、 /posts/:id/slides ルートに一致するパラメーターとして id を探しています。編集ページで機能する理由は、 @post 変数が Post オブジェクトの ID ( @post = Post.find(params[:id]) ) を見つけているためです。Post コントローラのインデックス アクションでは、検索パラメータとページネーションを指す @posts インスタンス変数があり、@post インスタンス変数が定義されていません。

あなたのブロックで試してみてください

 post_slides_path(post.id)
于 2012-08-01T22:13:38.187 に答える