gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:31:53 26 4
gpt4 key购买 nike

快速警告:我对 Rails 还很陌生,我的知识有点千篇一律。我知道如何做某些事情,但我对它们为什么总是有效缺乏重要的理解。

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

我想要的是在我的编辑 View 中,在代表可见属性的每个信息字段旁边有一个复选框。在阅读了大量与此主题相关的其他帖子并尝试了多种代码变体之后,我总是以某种错误告终。在我看来最直观正确的代码如下:

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

但是我收到一条错误消息,指出无法将 Symbol 解析为整数。我不确定这个解析在哪里发生,除非它查看 :visible 作为数组并尝试使用 :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 %>

关于ruby-on-rails - 如何使用 Form_For 更新模型中的哈希属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com