0

사용자 A가 사용자 B에게 메시지를 보낼 수있는 기능을 구현하려고합니다. 사용자 A가 사용자 B의 프로필을보고 메시지 보내기 링크를 클릭한다고 가정 할 때 사용자 B 만 메시지를 수신 할 수 있도록하려면 어떻게해야합니까? 즉, 만들기 동작에서 어떻게 사용자 B를 캡처 할 수 있습니까? 새 작업에서 사용자 B를 캡처 할 수 있지만 작업을 만들지는 못했습니다. 다음은 내가 지금까지 가지고있는 것입니다 :msg를 보내는 create 작업에서 사용자를 캡처하는 방법은 무엇입니까?

따라서 메시지 보내기 링크는 새로운 작업을 위해 사용자 B의 매개 변수를 전달합니다. 따라서 새 작업의 @recipient은 사용자 B이고 사용자 B의 이름과 사진을 표시 할 수 있습니다. 그러나 @recipient은 작성 조치에서 nil입니다. 작성 액션에서 @recipient가 사용자 B인지 어떻게 확인할 수 있습니까?

답변

1

수신자 사용자 ID 인 제출 메시지 양식에 숨겨진 필드를 추가하십시오. 양식에서

:

<%= f.hidden_field :recipient_id, :value => @recipient.id %> 

이 방법, 당신의 PARAMS받는 사람이되고 수신자 정보와 새 메시지를 만듭니다.

또한 생성 작업 경로가 무엇인지에 따라 다릅니다. 경로에서 recepient_id을 사용할 수있는 경우 new 동작에서와 마찬가지로 다시 사용하면됩니다.

1

컨트롤러의 인스턴스 변수는 하나의 요청에만 적합합니다. 은 create 요청 중에 더 이상 new에서 설정되지 않습니다.

그래서 다시보세요! :id이 여전히 HTTP 매개 변수에 있는지 확인하고 @message.recipient = User.find(params[:id])을 수행하십시오.

+0

감사합니다.이 역시 도움이되었습니다. – pratski