0

나는 사용자를 필요로한다고 생각합니다. 어딘가에서 내 협회를 통해,하지만 매우 새로운 것이므로 어떤 도움을 주시면 감사하겠습니다.has_many 맞춤 작성 작업

단순화를 위해 3 가지 모델이 있다고 가정 해 보겠습니다.

Faults - belong_to :user and has_many :fault_comments 
Users - has_many :faults and has_many :fault_comments 
FaultComments - belongs_to :fault and belongs_to: user 

는 내가 뭘하고 싶은 것은 오류 쇼 페이지에서 오류 주석을 추가 할 수있는 기능입니다

Faults 
Users 
FaultComments 

은, 현재 나는 아래에 있지만 내가 그것을 모두가 정상적으로 작동하도록 질수 .

routes.rb

devise_for :users do 
get '/users/sign_out' => 'devise/sessions#destroy' 
end 
resources :faults 
resources :fault_comments 

보기/고장/show.html.erb

<h3>Add New</h3> 
<%= form_for @faultcomment, :url => fault_comments_path(:fault_id => @fault.id, :user_id => current_user.id) do |f| %> 
<%= f.text_field :comment %> 
<%= f.submit %> 
<% end %> 

컨트롤러/faults_comments_controller.rb

모든
def create 
@fault = Fault.find(params[:fault_id]) 
@faultcomment = @fault.fault_comments.new(params[:faultcomment]) 
@faultcomment.user_id = params[:user_id] 
@faultcomment.comment = :comment 
if @faultcomment.save 
    redirect_to faults_path 
end 
end 
+0

어떤 오류 (들) 당신이 점점? –

+0

잘 작동하지만 이것이 어떤 방법 으로든 최선의 방법이라고 확신하지는 않습니다. –

답변

0

첫째, 당신이해야한다고 생각 아마도 FaultCommentsController을 그대로 두는 것이 좋습니다. 아마도 다음과 같습니다.

def create 
    @fault_comment = FaultComment.new(params[:fault_comment]) 
    @fault_comment.user = current_user 
    if @fault_comment.save 
    redirect_to faults_path 
    end 
end 

(참고로 CamelCase 및 snake_case에 대해 배우고이 두 언어를 올바르게 변환하는 방법은 도움이됩니다. 결과적으로 FaultComment의 뱀이 fault_comment이 아니라 faultcomment이 아닙니다. 이 점을 이해하지 못한다면 문제가 발생할 수 있습니다.)

views/faults/show.html.erb에있는 양식은 다소 나을 것 같습니다. 컨트롤러를 원래 상태로 다시 변경하면 작동합니까?

또한, 다음과 같은 양식을 변경

<h3>Add New</h3> 
<%= form_for @fault_comment, :url => fault_comments_path do |f| %> 
<%= f.text_field :comment %> 
<%= f.hidden_field :fault_id, @fault.id %> 
<%= f.submit %> 
<% end %> 
+0

컨트롤러를 제안서로 변경했습니다. 원래대로 되돌릴 필요가 없습니다 ... 이것은 오류 코드의 메모 필드를 채우지 만 user_id 또는 fault_id는 채우지 않습니다. –

+0

수정 사항보기. (컨트롤러 코드가 바뀌 었음을 참고하십시오.) –

+0

정말 고맙습니다. 그럴 수는 있을지도 모르겠지만, 내 마음 속에는 PHP도 조금 있습니다! –