0
아래의 새 게시물보기를 호출 할 때 NilClass의 경우 정의되지 않은 메서드'model_name ': 클래스이 나타납니다. 나는 이것에 대해 많은 연구를했으며, 인스턴스 변수 @posts가 컨트롤러에 정의되어 있지 않을 때 주로 발생하는 것처럼 보입니다. 또한 routes 파일에 "resources : posts"를 포함 시켰습니다.호출 할 때 정의되지 않은 메서드`model_name '이 표시됩니다.
컨트롤러에서 이것을 선언했습니다. 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%>
"def create"메소드를 "def new"로 업데이트했습니다. 화면이 URL 표시 줄의 "새"경로와 함께 깜박이며 양식에 아무 것도 입력하지 않고 즉시 리디렉션됩니다. 그러나 게시물 테이블의 새 행이 만들어집니다. – kyle
** 물론! ** 당신은 어떻게 생각 했습니까? 다시'create'로 이름을 바꾸고 내 게시물에'new'도 추가하십시오. –
나는이 레일즈 북을 추천한다. http://pragprog.com/book/rails4/agile-web-development-with-rails –