Ruby on rails 3 无法在Rails中获得简单的搜索工作
我是rails新手。我试图在我的推文中实现简单搜索,但它显示了整个推文,而不是我正在搜索的特定推文。使用SQLITE和Rails 3.2.6 我看了RailsCasts#37和其他一些教程,但我不知道我在哪里犯了错误 我的推特模型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
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])