【问题标题】:Iterating and rendering an ActiveRecord_Relation for Views in Rails?在 Rails 中迭代和渲染视图的 ActiveRecord_Relation?
【发布时间】:2020-01-30 01:40:42
【问题描述】:

我正在努力“破解”一个 ActiveRecord_Relation 以便在 Rails 中的视图中呈现。我收到如下回复:

#<ActiveRecord::Relation [#<Request id: 25803, time_inserted: "2019-07-27 17:20:17", time_modified: "2019-08-03 17:37:48", time_completed: "2019-08-03 17:37:48", disposition: "Forced Ignore", account: "301385", trans_uuid: "008326d4-b090-11e9-aead-0282b642e944", customers_identifier: "46134865dfdsaasdfs4", customers_reason: "E", customers_customer: "reveltransit", request_state: "NY", request_license: "12345678", request_lastname: "BOLLS", request_firstname: "JEFF", request_middlename: nil, request_dob: nil, request_gender: "">, #<Request id: 25919, time_inserted: "2019-07-27 17:40:17", time_modified: "2019-08-03 17:37:48", time_completed: "2019-08-03 17:37:48", disposition: "Forced Ignore", account: "301385", trans_uuid: "008326d4-b090-11e9-aead-0282b642e944", customers_identifier: "4434kjk34k3j43kk34j3", customers_reason: "E", customers_customer: "reveltransit", request_state: "NY", request_license: "12345678", request_lastname: "BOLLS", request_firstname: "JEFF", request_middlename: nil, request_dob: nil, request_gender: "">, #<Request id: 26069, time_inserted: "2019-07-27 18:00:20", time_modified: "2019-08-03 17:37:48", time_completed: "2019-08-03 17:37:48", disposition: "Forced Ignore", account: "301385", trans_uuid: "008326d4-b090-11e9-aead-0282b642e944", customers_identifier: "461348652f19ffc4901efc8e31c4", customers_reason: "E", customers_customer: "reveltransit", request_state: "NY", request_license: "12345678", request_lastname: "BOLLS", request_firstname: "JEFF", request_middlename: nil, request_dob: nil, request_gender: "">]>

我的模型如下所示:


class Request < ApplicationRecord

    establish_connection(:development) 
    self.table_name = "incoming"

    def self.search(search) 
     self.where(:trans_uuid => search)
    end 



end

我的控制器中的搜索方法:

 def search
    results = Request.search(params[:search])
    @records = results.pluck(:trans_uuid) 
    byebug 
end

和视图:

<%= form_with url: requests_search_path, method: :get do |form| %>
<%= form.text_field :search %>
<%= form.submit 'Search' %>
<% end %>



<h3><u>Search Results</u></h3><br />

<h4><%= @records.map { |record| record } %></h4>

无法让它在视图中呈现,因为它始终是一个数组。如果我尝试对其进行迭代,我会收到 no method 错误。

【问题讨论】:

  • 哪个变量总是数组?哪一行给你一个错误?你能粘贴完整的堆栈跟踪或至少完整的错误消息吗?
  • results 是返回的ActiveReocrd_Relation 对象。 @records 是一个数组,然后我尝试按照 Sebastian Palma 的建议使用 each 对其进行迭代,但视图中没有渲染,但没有渲染。
  • 如果我尝试迭代它,我得到一个无方法错误,你能添加那个错误吗?
  • 我很抱歉。我想我解决了这个问题。那是在我在控制器中使用.pluck 方法之前,然后它在views 中被迭代。现在没有错误,返回是gist.github.com/dsound-zz/e548efdb15d4afc784f03cfebdd351ad
  • 该操作正在返回 JS 响应,请参阅日志 (RequestsController#search as JS)。应该有一个可以处理该结果的 JS 文件。

标签: ruby-on-rails activerecord view controller


【解决方案1】:

所以在进一步的研究中并且之前从未使用过form_with,我意识到默认情况下,form_with 假设您将使用 AJAX。要选择退出,您必须在 viewsform_with 方法中包含 :local

所以&lt;%= form_with model: @request, method: :get do |form| %&gt; 必须是&lt;%= form_with model: @request, local: true, method: :get do |form| %&gt;

来自文档:

3.1.1 form_with form_with 是一个帮助编写表单的助手。默认情况下,form_with 假定您的表单将使用 Ajax。您可以通过传递 :local 选项 form_with 来选择退出此行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2015-07-14
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2023-04-09
    相关资源
    最近更新 更多