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在 's path 中传递 objectPost类似的东西

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