2015-06-20 56 views
1

我正在研究一個非常簡單的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方法,以便我可以通過似乎是約定的問題?

如果您需要更多信息或者如果我的問題不夠清楚,請不要猶豫編輯或索取更多信息。謝謝大家!

回答

2

好的,我明白了這一點。與我在其他形式中打破Rails命名約定的問題類似,我必須通過search_form_for輔助方法傳遞url和方法。它正在工作!

下面是我對搜索視圖現在:

<%= search_form_for(@q, url: "/inventory", method: :get) do |f| %> 
    <%= f.search_field :asset_name_cont, placeholder: 'Search...' %> 
<% end %> 
相關問題