我正在使用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
我不知道自己犯了什么错误。任何帮助将非常感激。在此先感谢:)
答案 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。