加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用Form_For更新模型中的哈希属性

发布时间:2020-12-17 03:02:14 所属栏目:百科 来源:网络整理
导读:一个快速警告:我对Rails很陌生,而且我的知识有些奇特.我知道如何做某些事情,但我缺乏对他们为何总能奏效的重要理解. 我目前有一个用户模型,其中包含大量信息,如地址,电子邮件等.此外,它还有一个名为visible的哈希.该散列中的键是每条信息,并且对于用户是否
一个快速警告:我对Rails很陌生,而且我的知识有些奇特.我知道如何做某些事情,但我缺乏对他们为何总能奏效的重要理解.

我目前有一个用户模型,其中包含大量信息,如地址,电子邮件等.此外,它还有一个名为visible的哈希.该散列中的键是每条信息,并且对于用户是否希望该信息是公开可见的,该值是真还是假.虽然我不确定这是否是最好的方法,但我想不出除了为每一位信息制作一大堆布尔变量之外的任何其他方式.最后,我序列化:在数据库中可见存储

我想要的是在我的编辑视图中,在每个信息字段旁边都有一个复选框,表示可见属性.在阅读了与此主题相关的大量其他帖子并尝试了大量的代码变体后,我总是会遇到某种错误.对我来说最直观正确的代码如下:

<%= form_for(@user,:id => "form-info-personal") do |f| %>
...
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.check_box :visible[:name] %>

但是我收到一条错误消息,指出无法将符号解析为整数.我不确定这个解析在哪里发生,除非它的查看:作为数组可见并尝试使用:name作为索引.

如果这个问题很简单/看似荒谬/缺乏重要信息等,我会提前道歉.任何提示,建议,链接,或者你会非常感激的是什么,即使他们是在“你从根本上做错了,回去做这样的事情”.

-缺口

解决方法

Rails 3.2引入了一个 nice addition to ActiveRecord,它允许您在单个字段中存储任意设置.

class User < ActiveRecord::Base
  store :settings,accessors: [ :color,:homepage ]
end

u = User.new(color: 'black',homepage: '37signals.com')
u.color                          # Accessor stored attribute
u.settings[:country] = 'Denmark' # Any attribute,even if not specified with an accessor

所以,你的代码看起来像这样:

# model
class User < ActiveRecord::Base
  store :settings,accessors: [ :name_visible,:email_visible ]

end

# view
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.check_box :name_visible %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读