【问题标题】:how to get simple search in rails based on RailsCasts tutorial?如何根据 RailsCasts 教程在 Rails 中进行简单搜索?
【发布时间】:2010-10-24 02:19:29
【问题描述】:

我按照 RailsCasts 教程使用自动完成功能进行了简单搜索,但它不起作用。 :(

查看/供应商/索引:

<% form_tag vendors_path, :method => 'get' do %>
    <%= text_field_with_auto_complete   :vendor, 
                                        :name,
                                        {}, 
                                        {:method => :get, :class => 'textbox'} %>
    <%= submit_tag "Search", :name => nil %>
<% end %>
</div>
<%= @searchvendor.id %>
<%= @searchterm %>

我将@searchterm 和@searchvendor.id 作为验证步骤。

所以这应该调用控制器 => 供应商,操作 => 索引:

def index
    @searchterm = params[:vendor][:name]

    @searchvendor = Vendor.search('checkpoint')

并且为供应商/型号创建搜索方法如下:

  def self.search(search)
  if search
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
  else
    find(:all)
  end

输出?

@searchterm 确实显示输入的值,因为 URL 中显示为 vendor[name]=?

@searchvendor.id 是一个长字符串,@searchvendor.name 显示错误,名称不是方法。

我被难住了。帮忙...拜托?

教程链接:

http://railscasts.com/episodes/37-simple-search-form

【问题讨论】:

  • 您可能需要添加指向您正在使用的教程的链接

标签: ruby-on-rails search


【解决方案1】:
  1. 您不应该将@searchterm 传递到您的Vendor.search 方法中吗?每次都通过“检查点”可能不会奏效。

  2. @searchvendor 将在您执行 find(:all) 时包含一个数组。您需要遍历数组并对每个项目执行 .name。

【讨论】:

  • 对,它通过了——我更改了它并剪切/粘贴了错误的代码来进行完整性检查......但是,#2 似乎有什么问题......!!会先试试看!
  • 好的,我正在传递 params[:name] 并尝试了 params[:vendor][:name],这似乎是有道理的,但被轰炸了。
  • 以什么方式轰炸?您是否使用过调试器(如 Netbeans 中的调试器)来检查 params[:name]、params[:vendor][:name] 的值还是仅检查 params?
猜你喜欢
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 2015-02-15
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多