我在尝试调用下面的新帖子视图时收到错误:未定义的方法`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%>
答案 0 :(得分:3)
要在new.html.erb中使用@post
,您必须在new
控制器方法中设置它。通常它看起来像这样:
def new
@post = Post.new
end