Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 无法在Rails中获得简单的搜索工作_Ruby On Rails 3_Search_Simple Form_Railscasts - Fatal编程技术网

Ruby on rails 3 无法在Rails中获得简单的搜索工作

Ruby on rails 3 无法在Rails中获得简单的搜索工作,ruby-on-rails-3,search,simple-form,railscasts,Ruby On Rails 3,Search,Simple Form,Railscasts,我是rails新手。我试图在我的推文中实现简单搜索,但它显示了整个推文,而不是我正在搜索的特定推文。使用SQLITE和Rails 3.2.6 我看了RailsCasts#37和其他一些教程,但我不知道我在哪里犯了错误 我的推特模型 class Tweet < ActiveRecord::Base belongs_to :user attr_accessible :body def self.search(search) if search

我是rails新手。我试图在我的推文中实现简单搜索,但它显示了整个推文,而不是我正在搜索的特定推文。使用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
我的索引页中的表单

<%= simple_form_for tweets_path, :method => 'get', :html => { :class => 'pull-right' } do |f| %>
    <%= f.input :search, :label => false, :input_html => { :class => 'span3'} %>
<% end %>

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

我想你把你的情人的名字搞错了。请看,“传递给form_的名称,用于控制参数中用于访问表单值的键”,因此在控制器中,您应该编写如下内容:

@tweets = Tweet.search(params[:tweets][:search])

params
hash可能有问题。您可以通过在控制器的搜索操作中放置
raise params.to_yaml
来调试
params
散列,以查看传递的字符串。另外,您可以通过测试Rails终端中的
Tweet.search(“一些文本”)
来查看Tweet.search功能是否有问题。谢谢您的评论。我尝试了Tweet.search(“一些文本”),搜索正在运行。似乎无法了解如何使用params(:search)非常感谢您的评论!我用Tweet.search(params[:tweets][:search])替换了Tweet.search(params[:tweets][:search]),我得到了这个错误,未定义nil:NilClass的方法“[]”有什么想法吗?参数的名称可能不是tweets。您可以输出参数并查看参数的确切名称。很抱歉问您这个问题!具体怎么做?我不确定使用simple_form_的正确方法是什么,但根据我在这里看到的,也许你应该传入一个对象:为了看到参数,你可以暂时将类似
render:text=>params.to_yaml
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
@tweets = Tweet.search(params[:tweets][:search])