2014-09-27 2 views
0

초보자의 질문에 대한 죄송하지만, 내 메시지 컨트롤러에 메시지 # 새로운 액션을 참조하는 다음과 같은 오류 받고 있어요 :조상 보석과 Message_controller

액티브 :: RecordNotFound를 (ID가없는 사용자를 찾을 수 없습니다) 응용 프로그램/컨트롤러/messages_controller.rb : 18 : ''새의

@recipient = User.find(params[:user_id]) 

I는 수신 된 메시지에 회신 할 때 나는 특히 내 messages_controller의 조상 보석을 통합하기 위해 노력하고있어 사용자받은 편지함 (index.html.erb). 현재 ID가 전달되지 않았지만 누구도 비슷한 문제가 발생했는지 이해합니다. 아래 코드 :

class MessagesController < ApplicationController 

    def index 
    @messages = current_user.to_messages 
    end 

    def outbox 
    type = (params[:type] && params[:type] == "sent") ? "from_messages" : "to_messages" 
    @messages = current_user.from_messages 
    end 

    def show 
    @message = Message.find params[:id] 
    end 

    def new 
    @message = Message.new(:parent_id => params[:parent_id]) 
    @recipient = User.find(params[:user_id]) 
    end 

    def create 
    @message = Message.new message_params 
    @message.sender_id = current_user.id 
    if @message.save 
     flash[:success] = "Your message has been sent!" 
     redirect_to users_path 
    else 
     flash[:failure] = "Please try again." 
     redirect_to users_path 
    end 
    end 

    def destroy 
    @message = Message.find(params[:id]) 
    @message.destroy 
    redirect_to messages_path 
    end 

    private 

    def message_params 
    params.require(:message).permit(:content, :sender_id, :recipient_id, :parent_id) 
    end 

end 

show.html.erb "새/메시지/PARENT_ID = 19?"(보기)

From: <%= link_to @message.recipient.first_name + " " + @message.recipient.last_name, user_path(@message.recipient.id) %>, 
To: <%= @message.sender.first_name + " " + @message.sender.last_name %>, 
Message: <%= @message.content %> 

<% if @message.recipient_id == current_user.id %> 
    <%= link_to "Reply", new_message_path(:parent_id => @message) %> 
<% end %> 

가 GET 시작 127.0.0.1에 대한 2014년 9월 27일 15시 41분에서 : 18 -0400 MessagesController # new as HTML 매개 변수 : { "parent_id"=> "19"} 메시지로드 (0.1ms) SELECT "메시지". * FROM "messages"WHERE "messages". "id" =? 응용 프로그램/컨트롤러/messages_controller.rb : 18 : LIMIT 1 [[ "ID", 19]] 에서 11ms

액티브 :: RecordNotFound (ID가없는 사용자를 찾을 수 없습니다)에서 404 찾을 수 없음을 완료`에 새로운 '

렌더링 /Users/sikendersingh/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/_source.erb (를 0.5ms) 렌더링 /Users/sikendersingh/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.0ms) Rendered/Users/sikendersingh/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.1ms) Rendered /Users/sikendersingh/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (13.8ms)

+0

params [: user_id]가 컨트롤러 (params [: user_id] == nil)에 전달되지 않으면 이해가되지 않습니다. 오류가 발생합니다. User.find (nil) –

+0

user_id 매개 변수가 전달되지 않으면이 요청을 생성하는보기가 표시되어야합니다. OTOH, user_id가 전달되는지 확실하지 않은 경우 로그를 살펴보십시오. 새 요청에 대한 로그를 붙여 넣으면 도움이됩니다. – brahmana

+0

브라흐마 나는 귀하가 언급 한 내용을 추가했습니다. 그래서 나는 조상 보석을 위해 railscast 에피소드 # 262를 따라 가려고 노력했다. 이것이 컨트롤러가 parent_id 매개 변수를 전달하는 이유입니다. 나의 목표는 회신 조치를 취하고 조상의 모든 이메일을 표시 할 수 있도록하는 것입니다. –

답변

0

수신자/발신자 문제에 대해 잘 모르겠지만 user_id를 뷰에서 param으로 전달해야한다고 생각합니다. 따라서 link_to는 <%= link_to "Reply", new_message_path(:parent_id => @message, :user_id => @message.recipient_id) %>이됩니다. 이렇게하면 새 작업에서 사용할 수 있습니다.

+0

응답 해 주셔서 감사합니다. 제대로 된 결과를 얻었습니다.하지만 앞서 언급 한 문제와 동일한 문제가 발생합니다. 그것을 작성하는 사용자에게 다시 전송됩니다. 그것에 대한 아이디어가 있습니까? –