使用'path'进行收集时出错:在simple_form_for中

时间:2013-12-11 12:58:38

标签: ruby-on-rails simple-form

我正在使用simple_form_for。在那里我想要一个没有价值的下拉。这些值从控制器中的方法返回,该方法返回这些值的哈希值。

在视图中我有:

= f.input :address_id, collection: address_string_gift_cards_path

控制器方法是:

def address_string
  #Some code here that returns hash of values
end

在我的路线文件中,我有:

resources :gift_cards do
    collection do
      get :address_string
    end
  end

在输出中我收到错误:

undefined method `to_a' for "/gift_cards/address_string":String

我不知道自己犯了什么错误。任何帮助将非常感激。在此先感谢:)

1 个答案:

答案 0 :(得分:1)

collection:需要一组对象。它将这些对象转换为可选择的选项。

你给它一个String - 一个返回值的控制器方法的路径。所以你期待它“去那里为我取这些价值”,但这不是simple_form_for知道如何做的事情。

相反,您需要直接将数据传递给collection:。您可以在控制器中声明address_string作为辅助方法:

class GiftCardsController < ApplicationController
  helper_method :address_string

  def address_string
    ..
  end
end

Helper方法可以直接从视图中调用:

= f.input :address_id, collection: address_string

collection:的更多信息,请访问https://github.com/plataformatec/simple_form#collections