2013-02-05 3 views
2

그래서 ROR을 사용하여 웹 응용 프로그램을 만들고 있는데이 양식의 올바른 구문이 무엇인지 알 수 없습니다. 저는 현재 코멘트와 게시물을위한 연관성있는 코드 유형을 만들고 있습니다.Ruby on Rails Association 양식

<%= form_for @comment do |f| %> 
<p> 
<%= f.hidden_field :user_id, :value => current_user.id %> 
<%= f.label :comment %><br /> 
<%= f.text_area :comment %> 
</p> 

<p> 
<%= f.submit "Add Comment" %> 
</p> 
<% end %> 
+0

문제가 무엇인가에 대한 액세스 권한을 줄 것인가? –

+1

일반적으로 폼에'user_id'를 전달할 필요는 없습니다. '컨트롤러 (controller) '에서 연관성이있다. –

+0

답변을 주셔서 감사합니다.하지만 여전히이 오류가 발생합니다. # <# : 0x3f805e0>에 대한 정의되지 않은 메소드'post_comments_path '가 – Pau

답변

4

양식이 첫 줄을 제외하고 괜찮 (당신은, 당신의 관계를 통해 이루어 먹으 렴 USER_ID에 대한 숨겨진 필드가 필요하지 않습니다) :

<%= form_for(@comment) do |f| %> 

은 다음과 같아야합니다

<%= form_for([@post, @comment]) do |f| %> 

이제 특정 게시물에 대한 의견을 작성하거나 업데이트하기위한 양식을 렌더링합니다.

그러나 모델과 컨트롤러를 변경해야합니다.

class Post 
    has_many :comments 
end 

class Comment 
    belongs_to :post 
end 

이 특정 게시물에 속하는 모든 의견을 보여, 당신은 @ post.comments에 액세스 할 수 있습니다. 컨트롤러에서

특정 게시물에 대한 의견을 액세스 할 수 있습니다

class CommentsController < ApplicationController 
    def index 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.all 
    end 
end 

이 방법을 사용하면 특정 게시물에 대한 의견의 인덱스에 액세스 할 수 있습니다.

업데이트

한 가지 더, 당신의 경로는 다음과 같아야합니다

AppName::Application.routes.draw do 
    resources :posts do 
    resources :comments 
    end 
end 

이 당신 post_comments_path (그리고 더 많은 경로)

+0

입니다. :) 내 경로를 편집하는 것을 잊었습니다. - .- – Pau