Привет, ребята. Я хочу знать, как я могу сделать простой поиск, используя именованную область в rails 3. Я успешно сделал это в консоли, но я не могу найти ни одного примера, который использует представления.
Вот код для модели trap.rb
:
class Trap < ActiveRecord::Base
scope :by_date_entry, lambda { |arg| where(["traps.date_entry = ?",arg])}
scope :by_empcode, lambda { |arg| where(["traps.empcode = ?",arg])}
end
В контроллере traps_controller.rb
:
class TrapsController < ApplicationController
# GET /traps
# GET /traps.xml
def index
@traps = Trap.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @traps }
end
end
# GET /traps/1
# GET /traps/1.xml
def show
@trap = Trap.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @trap }
end
end
# GET /traps/new
# GET /traps/new.xml
def new
@trap = Trap.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @trap }
end
end
# GET /traps/1/edit
def edit
@trap = Trap.find(params[:id])
end
# POST /traps
# POST /traps.xml
def create
@trap = Trap.new(params[:trap])
respond_to do |format|
if @trap.save
format.html { redirect_to(@trap, :notice => 'Trap was successfully created.') }
format.xml { render :xml => @trap, :status => :created, :location => @trap }
else
format.html { render :action => "new" }
format.xml { render :xml => @trap.errors, :status => :unprocessable_entity }
end
end
end
# PUT /traps/1
# PUT /traps/1.xml
def update
@trap = Trap.find(params[:id])
respond_to do |format|
if @trap.update_attributes(params[:trap])
format.html { redirect_to(@trap, :notice => 'Trap was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @trap.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /traps/1
# DELETE /traps/1.xml
def destroy
@trap = Trap.find(params[:id])
@trap.destroy
respond_to do |format|
format.html { redirect_to(traps_url) }
format.xml { head :ok }
end
end
end
А на мой взгляд index.html.erb
:
<h2>Time Reconciliation Application for Payroll 1.0</h2>
<table>
<tr>
<th>Empcode</th>
<th>Date entry</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @traps.each do |trap| %>
<tr>
<td><%= trap.empcode %></td>
<td><%= trap.date_entry %></td>
<td><%= link_to 'Show', trap %></td>
<td><%= link_to 'Edit', edit_trap_path(trap) %></td>
<td><%= link_to 'Destroy', trap, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Trap', new_trap_path %>
Я хочу поставить как текстовое поле поиска, в котором пользователь может ввести код employee_entry или date_entry в index.html.erb
. Я сделал что-то подобное, используя meta_search и meta_where, но я бы предпочел использовать named_scope, но я не знаю, как отобразить это, используя view и controller. Коды в моей модели trap.rb
работают на моей консоли. Я просто не знаю, как заставить это появиться в представлении. Просьба помочь ...