这是我第一次使用rails helper,并且没有找到很多关于如何在helper中输出activerecord搜索的文档。
我拥有的是任务表单,任务可以有一个位置。我不希望用户输入位置,而是使用带有自动填充的文本框,用户可以在其中搜索位置。当用户选择位置时,我使用location_id填充隐藏的“location_id”字段。
我正在使用jQuery jsonSearch进行自动填充,因此我必须在页面加载时将所有位置表字段输出到javascript对象中。
我认为我的助手就像是
module TaskHelper
def location_search
@location = Location.search("location_id, address")
@location.include_root_in_jason=false
end
end
然后在我的_form.html.erb中我有
var locations=<%= raw location_search.to_json %>;
这是使用助手的错误方法吗?我也试过没有@location但我只是继续获取var locations = false;
我认为最好不要将查询放入tasks_controller中,因为当我这样做时,所有显示为任务/编辑和放大的部分的位置都是如此。任务/新对象,我认为这很糟糕。
答案 0 :(得分:3)
方法返回Ruby中的最后一个表达式。
因此,要有一个返回位置列表的方法,请确保最后一个表达式返回列表。简单地将@location放在最后一行就应该这样做。然后它使用局部变量。
但是,您应该将集合放入控制器中的实例var中,并使用它而不是在帮助程序中使用Active Record。将模型代码放在帮助程序中会使查找很困难,并且通常将控制器作业视为使用模型代码。
只需在控制器中说出@location_json = Location.search(&#34; location_id,address&#34;),然后就可以在模板中使用@location_json var。