【问题标题】:Rails form errorRails 表单错误
【发布时间】:2012-12-05 15:25:52
【问题描述】:

我有一个 component 模型 has_many :framework。 以我编写的形式将框架与组件相关联:

<div class="field">
  <%= f.label :frameworks %><br />
  <%= f.collection_select :frameworks, Framework.all, :id, :name, {}, {:multiple => true}  %>
</div>

但现在这给了我:

Framework(#70243540172600) expected, got String(#70243531874180)

还有一个问题:

如何用按钮隐藏/显示这个 div?因为列表可能很大。

【问题讨论】:

    标签: ruby-on-rails select hide show


    【解决方案1】:

    如果 Component has_many :frameworks,则不能使用 collection_select。

    在这种情况下,格式为:

    <%= f.collection_select :frameworks, Framework.all, :id, :name ... etc... {:multiple => true} %>
    

    将返回 params[:component][:frameworks] = ["3", "4", "55"]。但是 component.frameworks - 是一个只接受框架对象的关联,但是你传递字符串!

    您必须使用手工制作的访问器,它将接受字符串化整数数组(框架的 ID):

    class Component < ActiveRecord::Base
      attr_accessible :framework_ids
    
      def framework_ids=(ids)
        ids.each do |framework_id|
          frameworks << Framework.find(framework_id)
        end
      end
    end
    

    那么你的表单选择器必须看起来像:

    <%= f.collection_select :framework_ids, Framework.all, :id, :name ... etc... %>
    

    按钮呢...你必须学习JQuery UI的东西。

    【讨论】:

      猜你喜欢
      • 2011-09-18
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      相关资源
      最近更新 更多