我正在研究一個非常簡單的CRUD Asset Management應用程序,我想使用Ransack。我想我正確地使用這種設置,在我的視圖和控制器,但每個索引視圖被擊中時我得到異常:Ransack未定義的方法_path Rails 4.2.1
undefined method
assets_path」爲#<#:0x007fa5f353e9e0>`
這是我的觀點:
index.html.erb
<div class="pull-right">
<%= search_form_for @q do |f| %>
<%= f.search_field :asset_name_cont, placeholder: 'Search...' %>
<% end %>
<table class="table table-striped">
<thead>
<tr>
<th>Asset Number</th>
<th>Asset Name</th>
<th>Serial Number</th>
<th>Model</th>
<th>Manufacturer</th>
<th>Asset Type</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% @assets.each do |a| %>
<tr>
<td><%= a.asset_number %></td>
<td><%= a.asset_name %></td>
<td><%= a.asset_serial %></td>
<td><%= a.asset_model %></td>
<td><%= a.asset_manuf %></td>
<td><%= a.asset_type.try(:name) %></td>
<td><%= link_to 'View', inventory_path(a), :class => 'btn btn-mini btn-info' %> <%= link_to 'Edit', edit_inventory_path(a), :class => 'btn btn-mini btn-warning' %></td>
</tr>
</tbody>
<% end %>
<%= will_paginate @assets %>
這裏是我的控制器摘錄: inventory_controller。 RB
def index
@q = Asset.ransack(params[:q])
@assets = @q.result.order("asset_number ASC").paginate(:page => params[:page], :per_page => 10)
end
這裏是我的模型(與場的註釋)
asset.rb
id :integer not null, primary key
asset_number :string
asset_shortname :string
asset_name :string
asset_desc :text
asset_serial :string
asset_model :string
asset_manuf :string
asset_type_id :integer
created_at :datetime not null
updated_at :datetime not null
asset_location :string
class Asset < ActiveRecord::Base
extend FriendlyId
friendly_id :asset_name, use: :slugged
validates :asset_name, :asset_serial, :asset_type_id, :asset_model, :asset_manuf, :presence => true
belongs_to :asset_type
end
我想我有控制器有線了罰款,我在之前通過表單和路由發佈,通過一個名爲assets
的控制器,這是一個在Rails 4.xx中作爲保留名稱的問題,因此我將控制器重建爲inventory
並致電從內部級。
我的問題是,我search_form_for
字段查看Asset
模型的字段爲asset_name
,但是當我編寫的視圖,因爲我已經奠定了我不斷得到該路徑錯誤。
有沒有辦法將不同的路徑傳入Ransack search_field
方法,以便我可以通過似乎是約定的問題?
如果您需要更多信息或者如果我的問題不夠清楚,請不要猶豫編輯或索取更多信息。謝謝大家!