2011-08-23 4 views
0

레일 2.3.5를 사용하고 있습니다. 나는 블로그 모델을 가지고 블로그는 많은 의견을 가지고 있습니다. 이것은 내가 블로그를 표시 할 것이며, 마지막에 코멘트를 만들기위한 옵션이있을 것입니다 내 블로그 컨트롤러 show 액션중첩 된 개체의 숨겨진 필드를 만드는 동안 오류가 발생했습니다.

def show 
    @blog = Blog.find(params[:id]) 
    @comment = Comment.new 
end 

입니다. 그래서 이것을 blogs/show.html.erb에 추가합니다. 내가 선 # 270 제기 응용 프로그램/뷰/블로그/show.html.erb보기 블로그 # 쇼

이 NoMethodError을 실행할 때

<% form_remote_for @comment do |f| %> 
     <%= f.label :content %> 
     <%= f.text_area :content, :rows => 6 %> 
     <%= f.hidden_field :blog => @blog %> 
     <%= f.submit %> 
    <% end %>  

는 그러나 나는 다음과 같은 오류가 발생합니다 :

undefined method `blog#<Blog:0xb677d8d0>' for #<Comment:0xb67762b0> 

추출 소스 (라인 # 270의 주위에) :

답변

1

당신의 ID를 숨길 수 있습니다 블로그는 블로그 개체가 아닙니다.

<%= f.hidden_field :blog_id%> 
2

Comment 모델이 있어야 belongs_to :blog

Blog 모델은 has_many :comments

이 같은 컨트롤러에 주석을 초기화해야한다 :

@blog.comments.new 

뷰는 다음과 같이해야합니다 :

<%= f.hidden_field :blog_id %> 
+0

이 경우 내 <% form_remote_for는 (을)를 가리 킵니까? – Rahul

+1

을 '@comment = @ blog.comments.build'와만 '@comment' –

0

문제는 f.hidden_field입니다. 첫 번째 매개 변수는 필드에 원하는 @comment의 속성 이름이어야하지만 코드에서는 해시입니다.

동작을 조정하여 @comment = @blog.comments.build을 설정하고보기를 f.hidden_field :blog_id으로 변경하는 것이 좋습니다.

관련 문제