私の Rails アプリは基本的に、データベースに格納されている種類の辞書を表示します。これをWebページに表示するための足場を備えた基本的なRailsアプリをセットアップしましたが、これを次のように設定する方法を一生理解できません。基本的には、26 個のアルファベット文字の行が必要です。文字 (「A」など) をクリックすると、その文字の辞書エントリのみが表示されます。
私の index.html.erb ファイル:
<% for char in 'A'..'Z' %>
<%= link_to( "#{char}", "/words/lettersearch", :id => "#{char}") %>
<% end %>
これを行うための私のwords_controller.rbファイルメソッド:
def lettersearch
@word = Word.find(:all, :conditions => ["word LIKE ?", "#{params[:word]}%"])
end
次に、@word を別のページに出力します。
私の問題は、インデックスページでどの文字をクリックしても、辞書全体が再び出力されることです。「lettersearch」メソッドを実際に実行しているようには見えないため、ルーティングに関係していることはわかっています。コントローラーの初期段階でデフォルトで定義されている「Show」メソッドを常に実行しようとしています。
これをどのようにルーティングするかを簡単に教えてくれる人はいますか? 私はレールにかなり慣れていないので、link_to の仕組みをまったくよく理解していません。
ルート.rb:
Dictionary::Application.routes.draw do
resources :words do
post 'search', :on => :collection
post 'lettersearch', :on => :collection
end
#Rest of routes.rb still commented apart from
match ':controller(/:action(/:id))(.:format)'