2

現在、次のエラーが発生しています。

undefined local variable or method `new_post_path'

私のインデックスページで、モデル設定は次のとおりです。

post.rb:

class Post < ActiveRecord::Base
  attr_accessible :postcontent, :poster, :postname
  belongs_to :user
end

ユーザー.rb:

class User < ActiveRecord::Base
  attr_accessible :email, :password, :username
  has_many :posts
end

インデックス ページのテンプレートは次のとおりです。

<h1>Listing posts</h1>

<table>
  <tr>
    <th>Postname</th>
    <th>Postcontent</th>
    <th>Poster</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @posts.each do |post| %>
  <tr>
    <td><%= post.postname %></td>
    <td><%= post.postcontent %></td>
    <td><%= post.poster %></td>
    <td><%= link_to 'Show', post %></td>
    <td><%= link_to 'Edit', edit_post_path(post) %></td>
    <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Post', new_post_path %>

このためのコントローラーは次のとおりです。

  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @posts }
    end
  end

ルーティングに関しては、私のrake routes出力は次のとおりです。

    user_posts GET    /users/:user_id/posts(.:format)          posts#index
               POST   /users/:user_id/posts(.:format)          posts#create
 new_user_post GET    /users/:user_id/posts/new(.:format)      posts#new
edit_user_post GET    /users/:user_id/posts/:id/edit(.:format) posts#edit
     user_post GET    /users/:user_id/posts/:id(.:format)      posts#show
               PUT    /users/:user_id/posts/:id(.:format)      posts#update
               DELETE /users/:user_id/posts/:id(.:format)      posts#destroy
         users GET    /users(.:format)                         users#index
               POST   /users(.:format)                         users#create
      new_user GET    /users/new(.:format)                     users#new
     edit_user GET    /users/:id/edit(.:format)                users#edit
          user GET    /users/:id(.:format)                     users#show
               PUT    /users/:id(.:format)                     users#update
               DELETE /users/:id(.:format)                     users#destroy
          root        /                                        home#index

私のルーティングファイルは次のとおりです。

  resources :users do
    resources :posts
  end
  root :to => "home#index"

ただし、注目に値するのは、に関連する他のすべてのテンプレートでこれと同様のエラーが発生することposts#*です。

4

2 に答える 2

1

postsのネストされたリソースがありますusers。のようなパスが必要ですnew_user_post_path(@user)@userこのヘルパーを渡すには があることを確認してください 。

コントローラーのフェッチユーザーindexのアクションでは、このようにします。posts

@user = User.first
于 2013-03-05T05:59:58.080 に答える
0

Userのパスにオブジェクトを渡す必要がありますPostそのようなもの

@user or current_user
new_user_post_path(@user)
于 2013-03-05T05:50:51.430 に答える