1

ビューがパラメーターをコントローラーに渡すと、コントローラーはすべての引数に対してなんらかの理由でnilを取得します。

誰かがこれを修正する方法はありますか?ありがとう!

「メッセージ」というモデルはありません

controllers / 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

views / messages / new.html.erb

<%=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 %>
4

2 に答える 2

9

ソースHTMLをチェックして、FormHelpersの機能をよりよく理解してください。

を使用するform_for f.text_fieldと、次の形式で名前属性が生成されます。

messages[subject]

したがって、パラメータは次の形式になります。

params[:messages][:subject]

<%= debug params %>また、パラメータの内容を調べるために使用することもできます。これは非常に役立ちます。

于 2012-07-05T10:23:24.723 に答える
1


datas = params[:messages]
これらの値は配列形式であるため、パラメータ値を取得できます。したがって、配列をフェッチできdatasます。個々のデータが必要な場合は、 次のコードを実行してチェックするために使用します 。これにより、サブジェクトの値が得られます。
subject = datas[:subject]
body = datas[:body]


<%= subject %>

于 2012-07-05T10:46:27.587 に答える