簡単な答えがあれば私には新しいので、私に許してください。私はレールのテーブルのための "アルファベットインデックス"を実装しようとしています。私は、文字をクリックして、テーブルをリフレッシュすることができるようにしたい - 最後の列の最初の文字がクリックされた文字と一致するデータのみを含む。テーブルのためのアルファベットフィルター
私が最初に考えたのは、このコードは私の最初の文字のそれぞれの一つを有する配列を与えるデータベース
@visitor_array = []
@v = Visitor.all
@v.each do |visitor|
@visitor_array << visitor.last_name[0,1]
end
@visitor_array.sort!
@visitor_array.uniq!
からの手紙の配列を生成することでした。私はこれを私の "アルファベット"として使った。私の見解では、私はここに次のコード
<% @visitor_array.each do |visitor| %>
<%= link_to visitor, alphasort(visitor) %>
<% end %>
考えを持っている文字をクリックしたときにヘルパー関数を実行することです。しかし、ここでは>どこにこだわっているのですか?
UPDATE:
さて、以下のコメントのおかげで、私はそれを把握することができました。他の誰かが不思議に思っていた場合、これはどのように達成されたのですか。
CONTROLLER
# Create array consisting of the first letter of every visitor's last name
@visitor_array = []
@v = Visitor.all
@v.each do |visitor|
@visitor_array << visitor.last_name[0,1]
end
#Sort array alphabetically in ASC order
@visitor_array.sort!
#Remove duplicate elements
@visitor_array.uniq!
if (params[:letter] != nil)
@visitors = Visitor.order("last_name ASC").where("last_name like ?", params[:letter] +"%")
else
@visitors = Visitor.order("last_name ASC")
end
VIEW
<% @visitor_array.each do |letter| %>
<%= link_to letter, :controller => "visitors" , :letter => letter %>
<% end %>
それだけで始まるので、上記の文の句は、 ''「?%」のようなlast_nameのように改善することができるザ・レターは、Railsのバージョンが通常のSQLのように動作することを前提としています。 – Karl
さて、ちょっと微調整した後、このコード行が機能します。 ( "last_name like?"、letter + "%") ' ただし、リンク部分が機能していません。私は、文字がクリックされるまでテーブルをフィルタリングしたくないのですが、そのコードをコントローラに置くと、テーブルがフィルタされてロードされます。私はヘルパーメソッドに入れてみましたが、何もしないようです。 –
はい、あなたはリクエストに手紙を受け取らなければ、@visitors = Visitor.order( "last_name ASC")を実行し、その場所を離れると思います。 – jaydel