2011-10-05 5 views
0

내 앱에는 User, PostComment 모델이 있습니다.Rails에서 여러 개의 값을 생성 액션에 전달하는 방법은 무엇입니까?

UserPost에 댓글을 달려고하면 Comments 컨트롤러의 새로운 동작이 인계받습니다. Post (댓글을 달아야 함)이 표시되고 UserComment입니다.

그러나 사용자가 제출할 때 Post.id 및 Comments.content를 작성 작업에 전달하려고합니다. 어떻게해야합니까? 여기

여러분 모두에게 comments/new.html.erb

<%= form_for @comment do |f| %> 
<%= render 'shared/error_messages', :object => f.object %> 
<div class="field"> 
<%= f.text_area :comment %> 
</div> 
<div class="actions"> 
<%= f.submit "Done" %> 
</div> 
<% end %> 

감사합니다. 나는 중첩 된 라우팅을했고, 내 new.html.erb 지금은 얻을 그러나

<%= form_for [@post,@comment] do |f| %> 
<%= render 'shared/error_messages', :object => f.object %> 
<% f.hidden_field :post %> 
<div class="field"> 
<%= f.text_area :comment %> 
</div> 
<div class="actions"> 
<%= f.submit "Done" %> 
</div> 
<% end %> 

있습니다 : 정의되지 않은 메서드`의견을 '내가 밖으로 그 놈을 질수 그림을.

답변

1

내 생각 엔 각 Comment 속한해야한다는 것입니다 a Post 그럴 경우 이것은 중첩 된 경로에 대한 완벽한 후보처럼 보입니다.

resources :posts do 
    resources :comments 
end 

http://guides.rubyonrails.org/routing.html#nested-resources 그래서 귀하의 경우에는 게시물 ID와 주석 ID 모두는 URL의 일부가 될 것입니다 :

# Will submit to a URL like /posts/1/comments 
# or /posts/1/comments/1 
<%= form_for [@post,@comment] do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <div class="field"> 
    <%= f.text_area :comment %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Done" %> 
    </div> 
<% end %> 

당신은 귀하의 의견 컨트롤러 행동에 post_id를 처리해야합니다.

0

먼저 새로운 조치에 Post.id을 전달해야합니다.

link_to "Add comment", new_comment_path(params[ :id ]) 

같은 뭔가 당신이 규칙을 다음한다고 가정 그렇게 params[ :id ]Post.id입니다. 나중에 Comment#create의 게시물에 관련된 코멘트를 생성합니다

@comment = Comment.new(:post_id => params[ :id ]) 

새로운 코멘트를 인스턴스화합니다. 마지막으로

=form_for(@comment, :as => :comment) do |f| 
    =f.hidden_field :post_id 
    =f.hidden_field :user_id 
    =f.text_area :comment 
    =f.submit "Submit" 

및 주석 # 새로운 컨트롤러 (HAML 사용)보기에서 새 의견

<%= form_for @comment do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <%= f.hidden_field :post_id %> 
    <div class="field"> 
    <%= f.text_area :comment %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Done" %> 
    </div> 
<% end %> 
0

위해 형성 :

@comment = Comment.new(:user_id => @user.id, :post_id => @post.id) 
관련 문제