2012-07-05 6 views
0

컨트롤러에 recipient 매개 변수를 전달하고 싶습니다.숨겨진 매개 변수를 Rails3의 컨트롤러에 전달하는 방법

@recipient.username 

가 어떻게 params[:message][:recipient]이 값을 전달할 수 있습니다 :이처럼 내보기로 표시 할 수 있습니다? "메시지"라는 모델이 없습니다.

컨트롤러/messages_controller.rb

def deliver 
    recipient = User.find_by_username(params[:recipient]) 
    subject = params[:subject] 
    body = params[:body] 

    current_user.send_message(recipient, body, subject) 
    redirect_to :controller => 'messages', :action => 'received' 
    flash[:notice] = "message sent!" 
end 

보기/메시지/new.html.erb

<td><%= @recipient.username if @recipient %></td> 

<%=form_for :messages, url: url_for(:controller => :messages, :action => :deliver) do |f| %> 
    <div class="field"> 
    <%= f.label :subject %><br /> 
    <%= f.text_field :subject %> 
    </div> 

    <div class="field"> 
    <%= f.label :body %><br /> 
    <%= f.text_field :body %> 
    </div> 

    <div class="actions"> 
    <%= f.submit %> 
<% end %> 
+1

이에서보세요 재미 있으 http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-hidden_field –

답변

1

당신은 당신의 수신자에 대한 attr_accessible 키를 할당하여이 작업을 수행하고 양식에 할당 할 수 . [: 메시지] [: recipient_id]

과 데시벨이 통과 당신이 만드는 행동이 합격 한 후

form_for :message do |f| 
    f.hidden_field :recipient_id, :value => @recipient.id.to_i 
    f.text_field :message 
    f.submit 
end 

당신은 PARAMS을 확인 할 수 있습니다.

관련 문제