0

我是一名铁路新手。我正在尝试在我的推文中实现简单的搜索,但它显示了那里的整个推文,而不是我正在搜索的特定推文。使用 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

我搜索内容时的 URL!

http://localhost:3000/tweets?utf8=%E2%9C%93&%2Ftweets%5Bsearch%5D=awesome

寻求帮助和支持!提前致谢!

4

1 回答 1

0

我认为您的参数名称错误。看这里,“传递给 form_for 的名称控制参数中用于访问表单值的键”,因此在您的控制器中,您应该编写如下内容:

@tweets = Tweet.search(params[:tweets][:search])
于 2012-08-03T05:02:48.713 回答