グループ機能を実装するアプリがあります。各グループには n 人のメンバーがいます。また、各グループには、グループ固有のプロフィール写真があります。
グループ名のみを念頭に置いて、グループ機能のオートコンプリートを実装できました。同じことについて、次のチュートリアルを参照しました。- http://railsforum.com/viewtopic.php?id=23188
プロジェクト固有の目的でruby 1.8.7とrails 2.0.2を使用しています。auto_complete プラグインを適切なディレクトリにインストールしました。私はUbuntu 10.04 OSを使用しています
グループの現在のオートコンプリート機能の一部として、さらに 2 つの機能を統合したいと考えています。
1> オートコンプリート テキスト フィールドにグループ名を入力すると、入力したテキストに基づいて表示される適切なグループ固有のプロフィール画像も表示できるはずです。
2> オート コンプリート テキスト フィールドに入力されたテキストに基づいて、各グループに対応して表示されるメンバーの数も確認できるはずです。
私は、ほぼ同じように次のハードルに直面しています。
現在、グループ名に基づいて基本的なオートコンプリート機能を取得するために実装したコードは次のようになります。
groups_controller.rbで
auto_complete_for :investor_group, :title
グループのindex.html.erbで
<%=stylesheet_link_tag "groups"%>
<%= javascript_include_tag :defaults %>
Search for a investor group: <%= text_field_with_auto_complete :investor_group, :title, {}, {:method => :get} %><%=submit_tag "Search"%>
のconfig/routes.rb
map.resources :investor_group, :collection => {:auto_complete_for_investor_groups_title => :get }
現在、グループのindex.html.erbで次のコードを使用して、特定のグループの画像を表示し、グループに属するメンバーの総数を取得できます。
<%for inv_group in @investor_groups%>
<div class="inv_group_img" align="center"><%=image_tag "investor_groups/#{inv_group.title}.jpg"%></div>
<div class="inv_group_details">
<%=inv_group.activated_members.size%><br>
<%end%>
現在、ビューの位置合わせは雑然としているかもしれませんが、それは私の当面の焦点ではありません。したがって、親切に、同じことを無視してください。
私は自分が何をする必要があるかについての考えを持っており、groups_controller.rbに同じコードを書くことができました
必要なものを取得するために、次のことを試しました:-
def calculate_members_count
@investor_group = InvestorGroup.find(params[:id])
@members_count = @investor_group.activated_members.size
return "@members_count", :title
end
これで、グループのタイトル/名前と members_count が表示されます。同じメソッド内でも画像を取得する方法がわかりません。
また、これから正しく動作する場合は、既に記述されているオートコンプリート機能に変更が反映されるように、いくつかの推測作業を行いました。それらが正しいかどうかはわかりません...しかし、ここにあります..
index.html.erbで次のように変更しました
Search for a investor group: <%= text_field_with_auto_complete :investor_group, :calculate_members_count, {}, {:method => :get} %><%=submit_tag "Search"%>
groups_controller.rb auto_complete_for :investor_group,:calculate_members_countで次を変更しました
ここまで正しいかどうかは本当にわかりません。もしそうなら、 routes.rbに反映する必要がある変更を本当に理解できません
また、万が一モデルに変更を加える必要があるかどうかも尋ねたいと思いました。仕方ないとは思いますが、念のため質問させてください。
また、オート コンプリート テキスト フィールドが 1 つの属性のみのクエリ検索をサポートしている場合、この場合、要件に合わせてカスタマイズされたオート コンプリート検索を定義する必要があると思いますか? はいの場合、有利なスタートを切る方法と、それを行う方法については本当にわかりません。これにもカスタムJavaScriptが必要になるのは今だけかもしれません。
これについて私を助けてください。これに関する入力は本当に便利です..
辛抱強く読んでくれてありがとう..
Question Edited
私は Rails の初心者であり、2.5 か月の経験しかありません。
多くの検索の後、複数のフィールドにオートコンプリート機能を実装するには、カスタマイズされたオートコンプリート メソッドを使用する必要があることに気付きました。
次のチュートリアルを参照して、カスタマイズされたオートコンプリートを機能させました:- http://cobaltedge.com/auto-complete-text-fields-in-rails-2
私のカスタマイズされたオートコンプリートメソッドは次のようになります:-
def auto_complete_for_investor_group_title
re = Regexp.new("^#{params[:investor_group][:title]}", "i")
#re1 = Regexp.new("^#{params[:investor_group][:title].jpg}", "i")
find_options = { :order => "title ASC", :conditions => ['title LIKE ?', "%#{params[:title]}%"] }
@investor_group = InvestorGroup.find(:all, find_options).collect(&:title).select { |title| title.match re }
render :inline => "<%= content_tag(:ul, @investor_group.map { |title| content_tag(:li, h(title)) }) %>"
end
オートコンプリートのカスタマイズされたメソッドが機能するための私の index.html.erb は次のようになります:-
<% form_tag({:action => :search}) do %> 投資家グループを検索: <%= text_field_with_auto_complete :investor_group, :title, :autocomplete => "off"%><%=submit_tag "Search"%> <%終了%>
routes.rbで行われた適切な変更は次のようになります:-
map.auto_complete ':controller/:action', :requirements => { :action => /auto_complete_for_\S+/ }, :conditions => { :method => :get }
このコードは、検索時にグループ タイトルを取得するのに適しています。このコードを変更して、グループ プロファイル固有の画像とグループに属するメンバーの総数も取得したいと考えています。
アップロードされた画像のタイプ file_field
は で、属性は:uploaded_data
です。
グループに属するメンバーの総数も取得する必要があります。現在、画像とグループに属するメンバーの総数は、次のコードを使用して個別に index.html.erb を介して表示されます:-
<%for inv_group in @investor_groups%>
<div class="inv_group contentTableGray">
<div class="inv_group_img" align="center"><%=image_tag "investor_groups/#{inv_group.title}.jpg"%></div>
<div class="inv_group_details">
<span style="float:right;padding-right: 10px;"><%=show_edit_link_for_group(inv_group)%></span>
<%=link_to inv_group.title, :action => :show, :id => inv_group%>
<div style="clear:both;"></div>
<%=truncate(inv_group.description,100)%>
</div>
<div class="inv_group_details" style="width:14%;text-align: center;">
<%=inv_group.activated_members.size%><br>
....( code continues further.. )
また、グループのサイズは、次のようなコードを使用して groups_controller で取得できることもわかりました:-
@investor_group = InvestorGroup.find(params[:id])
@members = @investor_group.activated_members.size
このコードをメソッド auto_complete_for_investor_group_title に変更する方法がよくわかりません。
アクティブ化されたメンバーは、次のInvestor_group.rb モデルからの関連付けとして取得されます
has_many :activated_members, :through => :investor_group_members, :source => :investor, :conditions => "activated is true"
上記の情報を使用して、グループに属する合計メンバーとグループ固有のプロフィール写真 を、タイトルで機能する既存のオートコンプリート機能に追加する方法を理解できません 。
同じことで私を助けてくれませんか。
どうもありがとう。