我遇到了這個問題:
#Array:0x00007f3e929cc430 的未定義方法`model_name'
{ count: collection.count(:all),
page: params[vars[:page_param]||Pagy::VARS[:page_param]],
item_path: "activerecord.models.#{collection.model_name.i18n_key}" }.merge!(vars)
end
這是我的 data_controller.rb:
def index
@pagy, @datas = pagy(Data.active_only.where(data_location: @location).sort_by(&:id))
end
這是我的 application_controller.rb
def pagy_get_vars(collection, vars)
{ count: collection.count(:all),
page: params[vars[:page_param]||Pagy::VARS[:page_param]],
item_path: "activerecord.models.#{collection.model_name.i18n_key}" }.merge!(vars)
end
最后我的觀點
<div>
<table id="tablestock" class="table_content table">
<thead>
<tr>
<th>ID</th>
<th>Date</th>
<th class="sorting_disabled">Location</th>
<th class="sorting_disabled">Name</th>
</tr>
</thead>
<tbody>
<% @datas.each do |data| %>
<tr data-link="<%= data_path(data) %>">
<td><%= data.id %></td>
<td><%= data.created_at.strftime('%d %b %Y') rescue ("<b style='color:red; font-size:16px;'>ERROR</b>".html_safe)%></td>
<td><%=data.data_location.location if data.location_id? %></td>
<td><%= data.data_name.name if data.name_id? %></td>
</tr>
<% end %>
</tbody>
</table>
<div class="justify">
<%= pagy_nav(@pagy).html_safe if @datas.present? %>
</div>
</div>
uj5u.com熱心網友回復:
您試圖在陣列上呼叫 model_name model_name 是 ActiveRecord::Relation 的 ActiveRecord 的一種方法。您沒有提供呼叫 pagy_get_vars(collection, vars) 方法的代碼,但您需要確保集合是某種具有模型名稱方法(如 ActiveRecord::Relation)而不是陣列的物件型別。
也許問題是從這里開始的:
Data.active_only.where(data_location: @location).sort_by(&:id)
sort_by 正在創建一個陣列。
你可以使用:
Data.active_only.where(data_location: @location).order(:id)
這樣,結果不是陣列而是 ActiveRecord::Relation。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328702.html
上一篇:陣列內的Rails同步范圍
