Rails复选框无法正常工作 - 提交表单时没有错误

时间:2014-10-27 13:21:05

标签: ruby-on-rails checkbox associations

我在Rails中有一个复选框有问题:

我有两个模型,User和authorized_users,具有以下关联:

class AuthorizedUser < ActiveRecord::Base
  has_one :user, as => :useraccount

class User < ActiveRecord::Base
  belongs_to :useraccount, :polymorphic => true, :dependant => :destroy

在&#34;编辑&#34;用户的视图如果Authorized_user收到电子邮件(true)或不收到(false),我想要一个cheking的复选框:

<%= check_box(:authorized_user, :sendEmail, options = {:checked => true}, checked_value =  true, unchecked_value = false) %> 

同样精确的代码在&#34; new&#34; Authorized_user的视图,在创建新用户时,但在我编辑它们时,使用&#34;编辑&#34;用户视图,提交表单时没有显示错误,但数据库中的布尔单元格不受影响。

我需要修改哪些内容,以便在提交表单时保存更改?

非常感谢你。

Pd:有关更多信息,我可以说其他数据正在被修改而没有问题#34;编辑&#34;来自用户的视图,例如:

<%= f.text_field :phone %>

更改后的错误日志:

<% f.check_box :sendEmail %>
来自@ marek-lipka

NoMethodError in Users#edit

Showing app/views/users/edit.html.erb where line #64 raised:

undefined method `sendEmail' for #<User:0xb5dbd96c>  

Extracted source (around line #64):  

63:   <p>¿Desea recibir e-mails?/p>  
64:   <p><%= f.check_box :sendEmail %></p>  
65: <%end%>  
66: <br />

经过与@ marek-lipka的长时间讨论,我们得到了线索:

我们必须使用:useraccount作为链接器操作而不是:authorized_user:

<%= check_box(:useraccount, :sendEmail, options = {:checked => true}, checked_value =  true, unchecked_value = false) %> 

1 个答案:

答案 0 :(得分:3)

您遇到此问题是因为渲染此复选框时不使用实际对象。应该是:

<%= f.check_box :send_email %>

请注意,我在Rails惯例中使用了send_email名称,您应该采用它。