rails options_from_collection_for_select - 在API的下拉列表中显示正确的数据,用户从下拉列表中选择

时间:2015-02-18 00:22:56

标签: ruby-on-rails ruby json api view

目前正在构建我的第一个rails应用程序...我正在使用外部API来获取信息。我可以在本地播种数据库,并在用户看到的下拉菜单中查看该数据的结果,但我希望这些信息来自API。

此代码显示了我在seed.db中的内容类别,但我需要从api中提取并显示这些类别,然后我想在用户选择该特定类别时显示与该特定类别相关的项目。我打算在这方面使用JS,但是对于在Rails中做到这一点的方法持开放态度 - 因为我是新手! -

视图中的

- (显示在seed.db中找到的类别的下拉列表)

   <select>
      <option value="category">Select Book Category</option>
      <%= options_from_collection_for_select(Category.all, :id, :title) %>
   </select>
控制器中的

- 我正在从api中正确地解析信息(我确定它不是最好的格式,但它正在工作)。我能够在相应的视图中迭代并显示视图中解析信息的信息。这只是连接下拉菜单中的点并立即正确显示该信息的问题。

在控制器中 -

def index
  base_url = 'sample url from google api using'
  key = ENV['GOOGLE_API_KEY'] 
  url = base_url + key

  response = RestClient.get(url)
  @events = JSON.parse(response)

  respond_to do |format|
  format.html
  format.json { render json: @events }
 end

1 个答案:

答案 0 :(得分:0)

所以options_from_collection_for_select只是接收你传递给它的集合,除非你指定它,否则不会专门使用控制器中的任何东西。您的代码options_from_collection_for_select(Category.all, :id, :title)通过Category.all从数据库进行查询。

看起来您正在@events中存储来自API的信息(尽管看起来像是一个事件列表而不是类别列表)。如果您使用从@categories分配的API生成的变量,那么您可以在视图中使用它,如下所示:

options_from_collection_for_select(@categories, :id, :title)