0

インデックスビューに簡単な検索ボックスを実装しようとしていますが、次のエラーが発生しました。

    SQLite3::SQLException: no such column: name: SELECT "tickets".* FROM "tickets"  WHERE (name LIKE '%s%')

これがなぜなのか、どうすれば修正できるのかわかりません。以下は私のMVCです

意見

<h1>Listing tickets</h1>
<%= form_tag tickets_path, :method => 'get' do %>
    <p>
      <%= text_field_tag :search, params[:search] %>
      <%= submit_tag 'Search' %>
    </p>
<% end %>
<table>
  <tr>
  ...
  </tr>

<% @tickets.each do |ticket| %>
  <tr>
    <td><%= ticket.caller_name %></td>
    <td><%= ticket.called_date %></td>
    <td><%= ticket.problem %></td>
   ...
<% end %>
</table>

モデル

class Ticket < ActiveRecord::Base
  attr_accessible :called_date, :caller_name, :problem
  has_many :logs, :dependent=>:destroy
  def self.search(search)
    if search
      find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
    else
      find(:all)
    end
  end
end

コントローラ

class TicketsController < ApplicationController
  def index
    @tickets = Ticket.all
    @tickets = Ticket.search(params[:search])
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @tickets }
    end
  end
4

1 に答える 1

2

nameチケットテーブルに存在しない列をクエリしようとしています。caller_nameしたがって、あなたの場合は、存在する列に置き換えるだけです。次の行を置き換えます。

find(:all, :conditions => ['name LIKE ?', "%#{search}%"])

find(:all, :conditions => ['caller_name LIKE ?', "%#{search}%"])
于 2013-03-26T18:51:50.837 に答える