繁体   English   中英

Rails Admin:自定义偏向归属

[英]Rails Admin: custom partial for belongs_to

我正在尝试为has_many关系创建自定义部分,并遇到一些问题。

我的模特

Message
has_many :formats

Format
belongs_to :message
validates_inclusion_of :format_type, :in => FORMAT_TYPES.keys

我有一个常量“ FORMAT_TYPES”(wmv,flv等),以便每个“格式”记录都有一个message_id和位于允许列表中的format_type字符串。

我正在尝试为rails_admin创建一个自定义的部分,允许管理员使用复选框来选择所需的格式。 这是我得到的:

- for format in FORMAT_TYPES.keys
  %div
    = check_box_tag "message[formats][]", format
    = format

输出以下内容:

<fieldset>
   <legend>Formats</legend>
   <div>
  <input id="message_formats_" name="message[formats][]" type="checkbox" value="640x360_8">
  640x360_8
</div>
<div>
  <input id="message_formats_" name="message[formats][]" type="checkbox" value="480x272_8">
  480x272_8
</div>
...
</fieldset>

当我选择几种格式并提交时,出现此错误:

ActiveRecord::AssociationTypeMismatch in RailsAdmin::MainController#create

Format(#2196273220) expected, got String(#2151941320)

这听起来像是在期待现有的格式ID。 这让我觉得我必须创建一个has_many_through并摆脱我的常数。 (试图避免这种情况)

试图弄清楚如何正确格式化我的部分文档,以允许创建这些新的格式记录。 有任何想法吗?

非常感谢提前!

我有一个类似的问题:我想有一个部分has_many / belongs_tohas_and_belongs_to_many协会,将使用复选框(复选框组),而不是默认表单控件。

我已经对rails_admin进行了扩展(=自定义视图部分) ,从而可以轻松地为相关模型使用复选框组小部件。

这不完全是您的用例 (您有一个枚举复选框组) ,但是您可以从我的模板中rails_admin灵感, 就像rails_admin所有模板rails_admin ,即使这是在HAML中

- selected_ids = (hdv = field.html_default_value).nil? ? selected_ids : hdv
- n = 3
- data = []
- all_values.sort {|x, y| x[0] <=> y[0] }.each_with_index do |item, index|
  - (0..(n-1)).each do |p|
    - data[p] ||= []
    - data[p] << item if index % n == p
- data.each_with_index do |slice, c|
  %div{:class => [:column, "col-#{c}"]}
    - slice.each do |item|
      %div.checkbox_field
        = check_box_tag "#{form.dom_name(field)}", item[1], selected_ids.include?(item[1]), {:id => "#{field.method_name}_#{item[1]}"}
        %label{:for => "#{field.method_name}_#{item[1]}"}
          = item[0]

其他解决方案是使用默认的rails_admin枚举功能https://github.com/Juicymo/rails_admin/wiki/Enumeration ),只是将其部分模板更改为使用复选框,而不是添加自定义内容和表单。

如有兴趣,模板和rails_admin复选框组关联小部件扩展在GitHub开源网址为: https : //github.com/Juicymo/rails_admin/blob/master/app/views/rails_admin/main/_form_checkboxes_multiselect.html。 HAML

问题在于format是一个对象,您正在传递format的字符串值。 您可以使用format_ids代替format。

= check_box_tag "message[format_ids][]", format.id

为了不使用任何格式(如果您希望它们不保存任何格式),您还需要添加一个杜比隐藏字段:

= hidden_field_tag "message[format_ids][]", 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM