attr_accessor用于ActiveModel的自定义属性

时间:2014-03-17 09:51:13

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

我需要使用复选框(布尔字段)来实现带有自定义字段的表单(在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

2 个答案:

答案 0 :(得分:0)

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生成的方法即可。尝试删除这两种方法,你会很高兴

答案 1 :(得分:0)

删除

  

attr_accessor:突出显示

并检查