0

私はレールに不慣れで、単純なメーラー関数を使用して、いくつかの属性アクセサーを私が持っている電子メール テンプレートに渡します。

私のモデルは次のようになります。

class Model < ActiveRecord::Base

attr_accessor :replace_1, :model_id

end

私のコントローラーは次のようになります。

def model_replace
  @model= Model.find(params[:model][:model_id])

  UserMailer.replacement_model(@model).deliver
  respond_to do |format|
    format.html { redirect_to({ :action => "model_replace"}, :notice => 'Model has been replaced.') }
  end
end 

私のフォームは次のようになります。

 # Form stuff bound to Model

<div class="radio"><%= f.check_box :replace_1 %></div>
<%= f.hidden_field(:model_id, :value =>model.id)

私のメーラーは正常に動作し、モデルを次の単純な .erb ファイルに渡します。

<p>Hello, the value of replace_1 is <%=@model.replace_1 %></p>

たとえば、「@model.User.user_id」に正常にアクセスできるため、モデルが通過していることがわかります。

また、Rails ターミナルでは、送信されているデータを確認できます - "model" => { "replace_1" => "1" }

erb ファイルの replace_1 に空の値を返しています。

ありがとう。

4

1 に答える 1

0

次の方法でパラメーターをコントローラーに追加することでこれを解決しました。

def model_replace
@model= Model.find(params[:model][:model_id])

@model.replace_1 = params[:model][:replace_1]

UserMailer.replacement_model(@model).deliver
respond_to do |format|
  format.html { redirect_to({ :action => "model_replace"}, :notice => 'Model has been replaced.') }
 end
end 

次に、次の方法で .erb ファイルにアクセスしました。

@model.replace_1

少し汚れているように見えますが、機能しています。この初心者の問題で立ち往生している人の助けになることを願っています。この機能を実行するための改善された方法を受け入れます。

ありがとう!

于 2012-08-06T12:10:01.790 に答える