调用View时未定义的方法`model_name'

时间:2011-12-25 19:10:20

标签: ruby-on-rails ruby

我在尝试调用下面的新帖子视图时收到错误:未定义的方法`model_name'用于NilClass:Class 。我已经对此做了很多研究,看起来它主要发生在Controller中没有定义实例变量@posts时。我还在路线文件中包含了“资源:帖子”。

我已在控制器中声明了这一点。 Current_user是当前登录用户的@user。我正在尝试创建一个新记录,其中user_id用当前用户填充。

class PostsController < ApplicationController

  def create
    @post = current_user.posts.build(params[:post])
    if @post.save
      flash[:success] = "Post created!"
      redirect_to root_path
    else
      render 'pages/home'
    end
  end
end

new.html.erb:

<h1>Create Post</h1>

    <%=form_for(@post) do |f|%> 
      <div class="field">
        <%=f.label :title %><br />
        <%=f.text_field :title%>
      </div>
      <div class="field">
        <%=f.label :body %><br />
        <%=f.text_field :body%>
      </div>
      <div class="field">
        <%=f.label :quantity %><br />
        <%=f.text_field :quantity%>
      </div>
      <div class ="actions">
        <%= f.submit "Post"  %>
      </div>
    <%end%>

1 个答案:

答案 0 :(得分:3)

要在new.html.erb中使用@post,您必须在new控制器方法中设置它。通常它看起来像这样:

def new
  @post = Post.new
end