블로그 항목 하단에 의견 양식을 작성하고 싶습니다. 문제는 blog_id를 저장하지 않기 때문에 주석이 작성되는 동안 blog_id가 지정되지 않는다는 것입니다. 나는이 줄을 갖는 것으로 생각했다 :rails nested_attribute
@new_comment = @blog.comments.build(params[:comment])
그것이 효과가 있지만 그렇게되지는 않을 것이라고 생각했다. 이것은 내가 무엇을 가지고 :
블로그 # 보여
def show
@blog = Blog.find(params[:id])
@new_comment = @blog.comments.build(params[:comment])
end
블로그 # 양식
...
<%= semantic_form_for @new_comment do |f| %>
<%= f.input :name %>
<%= f.input :content, :label => "Comment", :input_html => { :rows => 6, :class => "xxlarge" } %>
<div class="pull-right"><%= f.commit_button :button_html => {:class => "primary"}, :label => "Submit" %></div>
<% end %>
blog.rb
accepts_nested_attributes_for :comments
의견 컨트롤러
def create
@comment = @blog.comments.build(params[:comment])
if @comment.save
redirect_back_or show_blog_path(@blog)
else
redirect_to show_blog_path(@blog)
end
end
편집 :하지만 지금은 후,
@blog = Blog.find(params[:id])
@blog.comments.build
@comments = Comment.where(:blog_id => @blog.id)
모든 것이 잘 작동 :
나는 수행하여 @blog 내부의 양식을 중첩 :
<%= semantic_form_for @blog do |f| %>
<%= f.semantic_fields_for :comments do |ff| %>
<%= ff.input :name %>
<%= ff.input :content, :label => "Comment", :input_html => { :rows => 6, :class => "xxlarge" } %>
<% end %>
<div class="pull-right"><%= f.commit_button :button_html => {:class => "primary"}, :label => "Submit" %></div>
<% end %>
및 #가 보여주는 블로그를 변경 나는 코멘트를 제출하고, 코멘트는 두 번 나타난다. 그것은 그것이 예정되어있는 주석 섹션에 나타나며 새로운 코멘트 양식 위에 미리 채워진 주석 양식으로 표시됩니다. 따라서 블로그의 내용, 방금 제출 한 미리 작성된 주석 양식, 새 주석 양식 및 주석 표시 섹션의 주석이 표시됩니다.
나는 그것이 무엇인지 모른다.
숨겨진 필드를 추가하고 싶지 않습니다. 나는 익숙한 방식으로 양식을 중첩했다. (내가하는 방식과 당신이하는 방식이 어떻게 다른지 확실하지 않습니다.) 하지만 위의 편집에서 위의 새로운 문제를 참조하십시오. 감사. – noob
미리 채워진 주석 형식은 @comments 변수 때문입니다. 'semantic_fields_for '는 기본적으로 모든 주석 (즉, 블로그의 기존 주석과 @ blog.comments.build 행에 의해 인스턴스화 된 새로운 주석)에 루프를 수행하고 각각을 양식에 표시합니다. – prasvin
p.s. : 위의 (편집 후) 제대로 작동합니까? 양식은'@ blog'에 대한 semantic_form_for를 가지며 주석의 각각에 대해 중첩 된 속성을 허용합니다. 이제 주석 제어기의 작업을 만들기 위해 양식이 제출됩니다. 이 양식은 이제'@ blog'에 대한 편집 양식으로 작동하므로 블로그 컨트롤러의 업데이트 작업에 제출하십시오. 코멘트가 생성되는 곳입니다 (또는 블로그가 업데이트되어 블로그가 중첩 된 속성을 받아들이므로 주석을 생성합니다). – prasvin