读取通过Rails中的表单发送的属性访问器

时间:2012-08-03 13:02:25

标签: ruby-on-rails

我是rails的新手,并使用简单的邮件程序功能将一些属性访问器传递给我的电子邮件模板。

我的模型看起来像这样:

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”=&gt; {“replace_1”=&gt; “1”}

有人可以帮助我,我在我的erb文件中为replace_1返回一个空值。

感谢。

1 个答案:

答案 0 :(得分: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

看起来有点脏,但它有效。希望它可以帮助任何坚持这个新手问题的人,并且我对执行此功能的任何改进方法持开放态度。

谢谢!