2012-09-26 38 views
0

眼下在app /視圖/微柱/ home.html.erb我..RoR:我如何只搜索具有特定屬性的微博?

<% form_tag purchases_path, :method => 'get', :id => "products_search" do %> 
    <p> 
    <%= text_field_tag :search, params[:search] %> 
    <%= submit_tag "Search", :name => nil %> 
    </p> 
<% end %> 

<% form_tag sales_path, :method => 'get', :id => "sales_search" do %> 
     <p> 
     <%= text_field_tag :search, params[:search] %> 
     <%= submit_tag "Search", :name => nil %> 
     </p> 
    <% end %> 

,然後在micropost.rb我有

scope :purchases, where(:kind => "purchase") 
    scope :sales, where(:kind => "sale") 

def self.search(search) 
    if search 
     where('name LIKE ?', "%#{search}%") 
    else 
     scoped 
    end 
    end 

,然後終於在microposts_controller.rb我有

def home 

    @microposts=Micropost.all 
    @[email protected] 
    @[email protected] 

    end 

現在我得到一個錯誤說未定義的局部變量或方法`purchases_path」,它確實爲sales_path相同。

我想要做的只是搜索一些微博,而不是全部微博。在我的微博表中,我有一個名爲kind的專欄,可以是「購買」或「銷售」。如何更改這三段代碼,以便一次搜索搜索並僅顯示那些類型爲「購買」的微博的結果。然後其他的搜索通過,並在結果中顯示只有在一種「買賣」

這個問題(在另一篇文章)的微柱具有RoR: how can I search only microposts with a specific attribute?

+0

爲什麼要使用舊的語法,而不是'where'條款? – apneadiving

+0

我正在學習本教程http://railscasts.com/episodes/37-simple-search-form。也許這是我的問題 – BigBoy1337

回答

1

50代表一個賞金你可以試試這個。

你的模型:

class Micropost 
    # ... 
    scope :purchase_only, where(:kind => "purchase") 
    # ... 
    def self.search(search) 
    if search 
     self.purchase_only.find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) 
    else 
     self.purchase_only 
    end 
    end 
end 

但是,這東西看起來很奇怪,我。

例如: - 你應該刪除.find(...),該探測器將使用Rails棄用4.

+0

你是對的。我按照rails 3更新了我的問題,但是你的答案沒有工作:(它給出了一個路由錯誤,沒有方法GET/[microposts]。你能看看我的編輯,看看我做錯了什麼嗎? – BigBoy1337

相關問題