0

私はいくつかの単純なアプリをやっています、私はある種の翻訳アプリになるつもりはないので、検索オプションと翻訳オプションを追加しています.検索に問題があります.単語なしで検索をクリックすると、それが表示されますデータベースにない単語を探すときに、そこにフラッシュ エラーが表示されるようにしたいと思います。

私のモデル

class Translation < ActiveRecord::Base


attr_accessible :text_english, :text_polish
validates_presence_of :text_english, :text_polish
validates :text_polish, :text_english, :uniqueness => true
 def self.search(search)
    if search
      where("text_english LIKE ? OR text_polish LIKE ?", "%#{search.strip}%", "%#{search.strip}%")
    else
        scooped
    end
  end
end

私のコントローラーで

# GET /translations/search
 def search
   @translations = Translation.search(params[:search])
   if !@translations.empty?
     respond_to do |format|
       format.html
     end
   else
     flash[:error] = "NO TRANSLATIONS"
     redirect_to new_translation_url
   end
  end
end

そしてインデックスの私の検索フォーム

<h1>Words</h1>
<%= form_tag search_translations_path, method: :get do %>
  <div class="field">
    <%= text_field_tag :search, params[:search] %>
    <button type="submit" class="btn">Search</button> 
 <% end %>

助けてくれてありがとう。

4

1 に答える 1

2

いくつかのオプションがありますが、非常に簡単な方法の 1 つは、params[:search] がないことを説明するためにコントローラーに数行を追加することです。

# GET /translations/search
 def search
   if params[:search].blank?
     flash[:error] = "A WORD TO TRANSLATE IS REQUIRED"
     redirect_to new_translation_url
   else
     @translations = Translation.search(params[:search])
     if !@translations.empty?
       respond_to do |format|
         format.html
       end
     else
       flash[:error] = "NO TRANSLATIONS"
       redirect_to new_translation_url
     end
   end
 end

覚えておくべき重要なことは、リダイレクトまたはレンダリングを 2 回行う可能性のあるコード内のパスを許可しないことです。従ってif params[:search].blank? .. else

于 2013-05-29T15:52:50.523 に答える