別のユーザーにメッセージを送信しようとしています。しかし、フィールドを空白のままにすると、コントローラーは別の「新しい」アクションをレンダリングします。
最初の送信にリンクするビュー コードは次のとおりです。
<%= link_to 'Send Mail', {:controller => 'messages', :action => 'new', :recipient_id => @profile.id}, :class => 'btn btn-large btn-primary' %>
メッセージ#新しいコードは次のとおりです。
def new
@message = Message.new
@recipient = Profile.find(params[:recipient_id])
end
メッセージ#新しいビュー コードは次のとおりです。
<%= simple_form_for @message do |f| %>
<%= f.input :title %>
<%= f.input :body %>
<%= f.input :recipient_id, :as => :hidden, :input_html => {:value => @recipient.id} %>
<%= f.input :sender_id, :as => :hidden, :input_html => {:value => @recipient.id} %>
<%= f.button :submit %>
<% end %>
メッセージ#作成コードは次のとおりです。
def create
@message = Message.new(params[:message])
if @message.save
flash[:notice] = "New message created"
redirect_to @message
else
flash[:error] = "Did not work"
@recipient = params[:recipient_id]
render action: "new"
end
end
フォームで送信された :recipient_id 値を取得し、render new アクションに渡すにはどうすればよいですか?