【问题标题】:attr_accessor usage for a custom attribute of ActiveModelattr_accessor 用于 ActiveModel 的自定义属性
【发布时间】:2014-03-17 09:51:13
【问题描述】:

我需要使用复选框(布尔字段)实现一个带有 自定义字段(在 db 中没有它的引用)的表单。

如果复选框被选中,后端必须写入某个多对多行并将其指向更新的对象。

问题是我在 article.rb 中的 setter 方法无法在表单发布中访问。

article.rb

class Article < ActiveRecord::Base
  attr_accessor :highlight

  def highlight
  end

  def highlight=(arg)
    puts "NO ACCESS"
  end
end

_form.html.erb

<%= semantic_form_for [:admin, @article] do |f| %>
  <%= f.input :title, :label => "Title" %>
  <%= f.input :text, :as => :ckeditor %>
  <%= f.input :highlight, :as => :boolean, :label => "Highlight" %>

article.rb(active_admin)

ActiveAdmin.register Article do
  form partial: 'form'
  permit_params do
    permitted = [:title, :text, :highlight]
    permitted
  end
end

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-4 activeadmin formtastic


    【解决方案1】:

    Javkhlan,attr_accessor :highlight 是的缩写形式

    def highlight
      @hightlight
    end
    
    def highlight=(highlight)
      @highlight = highlight
    end
    

    所以,你的代码

    def highlight
    end
    
    def highlight=(arg)
      puts "NO ACCESS"
    end
    

    只需重写您的attr_accessor 生成的方法。尝试去掉这两种方法,你会很开心

    【讨论】:

      【解决方案2】:

      删除

      attr_accessor :highlight

      然后检查

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 2012-04-17
        • 1970-01-01
        • 2020-01-22
        • 1970-01-01
        相关资源
        最近更新 更多