2012-05-22 4 views
0

Я создаю игрушку Rails приложение. Я создал эшафот для моих объектов Post. Теперь я хочу добавить некоторые функции поиска в вид, созданный эшафотом. Для добавления функции поиска я следую http://railscasts.com/episodes/37-simple-search-form.форма поиска не отображается

Чтобы приложение/просмотров/сообщений/index.html.erb добавить

<% form_tag posts_path, :method => 'get' do %> 
    <p> 
    <%= text_field_tag :search, params[:search] %> 
    <%= submit_tag "Search", :name => nil %> 
    </p> 
<% end %> 

, а затем код для перечисления следовать.

В контроллерах/posts_controller.rb У меня есть

class PostsController < ApplicationController 
    # GET /posts 
    # GET /posts.json 
    def index 
    @posts = Post.search(params[:search]) 
    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @posts } 
    end 
    end 

В модели/post.rb У меня есть

class Post < ActiveRecord::Base 
    attr_accessible :description, :image_url, :title 
     validates :name, :presence => true 
     validates :title, :presence => true, 
         :length => { :minimum => 5 } 
    def self.search(search) 
     if search 
       find(:all, :conditions => ['name LIKE?', "%#{$search}%"]) 
     else 
       find(:all) 
     end 
    end 
end 

Когда я запускаю сервер, я не получаю никаких ошибок, но форма не отображается. Я посмотрел на сгенерированный источник страницы, и там нет формы. Что происходит? Есть ли способ отладки таких ситуаций?

ответ

2

С Rails 3 form_tag хелпер сам возвращает html, который он производит. Знак равенства необходим. Поэтому, пожалуйста, измените первую строку

<%= form_tag posts_path, :method => 'get' do %> 

, который отличается в Rails 2. Поскольку эпизод Railscasts довольно старый, вы можете столкнуться с другими вопросами, а также.

См. Также the Rails API.

Удачи.