0

我正在尝试创建仅用于搜索表单的选择,而不是直接发布到服务器这里是视图中的代码:

= simple_form_for :tags, url: '#' do |f|
  = f.input 'id[]', collection: @tags

@tags 只是主动关系-来自acts-as-taggable-on的标签 是我来自控制器的代码:

@tags = project.user_statuses.tag_counts_on(:tags)

从控制台看起来像:

[#<ActsAsTaggableOn::Tag id: 1, name: "amazing">, 
 #<ActsAsTaggableOn::Tag id: 2, name: "bfc-release">,
 #<ActsAsTaggableOn::Tag id: 3, name: "demo">,
 #<ActsAsTaggableOn::Tag id: 4, name: "awesome">,
 #<ActsAsTaggableOn::Tag id: 5, name: "project1">]

但在我看来,我得到了 # 的未定义方法 `id[]'。我做错了什么?

4

2 回答 2

0

似乎这是一个糟糕的语法和非信息性错误消息

当我添加“as:selectbox”选项时出现:

 = simple_form_for :tag, url: '#' do |f|
   = f.input 'ids',
     as: :select,
     collection: @tags,
     label_method: :name,
     value_method: :id,
     input_html: {:multiple => false}
于 2013-07-24T11:53:38.670 回答
0

SimpleForm 尝试获取该字段的值。它接受 object( :tags) 并向其发送一个名为 field( id[]) 的方法。所以这导致:tags.send 'id[]'. 而且因为 Symbol 类没有这样的方法,所以你得到了错误。

在对象不是模型的情况下,使用 simple_form_for 可能是个坏主意。

于 2013-07-24T11:47:58.413 回答