【问题标题】:rails options_from_collection_for_select - display proper data in dropdown from API and user selects from dropdownrails options_from_collection_for_select - 在 API 的下拉列表中显示正确的数据,用户从下拉列表中选择
【发布时间】:2015-02-18 00:22:55
【问题描述】:

目前正在构建我的第一个 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

【问题讨论】:

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


    【解决方案1】:

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

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

    options_from_collection_for_select(@categories, :id, :title)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多