我是铁杆新手。我正在尝试在我的推文中实现简单搜索,但显示整个推文,而不是我正在搜索的特定推文。使用SQLITE和Rails 3.2.6
我查看了RailsCasts#37和其他一些教程,但我不知道我在哪里犯了错误。
我的推文模型
class Tweet < ActiveRecord::Base
belongs_to :user
attr_accessible :body
def self.search(search)
if search
find(:all, :conditions => ['body LIKE ?', "%#{search}%"])
else
find(:all)
end
end
end
控制器
@tweets = Tweet.search(params[:search])
我的索引页面中的表单
<%= simple_form_for tweets_path, :method => 'get', :html => { :class => 'pull-right' } do |f| %>
<%= f.input :search, :label => false, :input_html => { :class => 'span3'} %>
<% end %>
推文迁移
class CreateTweets < ActiveRecord::Migration
def change
create_table :tweets do |t|
t.text :body
t.references :user
t.timestamps
end
add_index :tweets, :user_id
end
end
搜索内容时的网址!
http://localhost:3000/tweets?utf8=%E2%9C%93&%2Ftweets%5Bsearch%5D=awesome
寻求帮助和支持!提前谢谢!
答案 0 :(得分:0)
我认为你得到了你的param错误的名字。 look here,'传递给form_for的名称控制params中用于访问表单值的键',所以在你的控制器中你应该写一些类似的东西:
@tweets = Tweet.search(params[:tweets][:search])