2011-09-14 6 views
1

ここでの多くの質問と同様に、チェックボックスがインデックスビューをフィルタするフォームを作成しようとしています。これは理想的にAJAXで発生するので、私は何かをリロードしません。問題は、私はRailsとプログラミングの初心者であることができるので、これを設定する方法についての助けが必要だということです。スコープとチェックボックスを使用してインデックスをフィルタリングする

フィルタリングするインデックスは/ usersです。ここで、チェックボックスの値はcurrent_userのプロファイルに添付されています。たとえば、次の点を考慮します。

<% form_for(current_user.profile) do |f| %> 
    <tr> 
    <td class="normal"><%= current_user.profile.current_city %></td> 
    <td><%= check_box_tag :current_city %></td> 
    </tr> 
    <tr> 
    <td class="normal"><%= current_user.profile.hometown %></td> 
    <td><%= check_box_tag :hometown %></td> 
    </tr> 
<% end %> 

これは私のモデルとデータベースで適切に働いていた場合は、チェックボックスのいずれかまたは両方をクリックすると、私のインデックス内の適切なプロファイルが部分的にレンダリングされます。

私はスコープを使用する必要があると思うが、非常に多くのプロファイル属性でそれを行うことは知らない。

がUserController:

class UsersController < ApplicationController 
    before_filter :authenticate, :only => [:edit, :update] 

    def index 
    @user = User.all 
    @profile = Profile.all 
    end 
end 

Userモデル:

class User < ActiveRecord::Base 
    attr_accessor :password 
    has_one :profile, :dependent => :destroy 
end 

Profileモデル:

class Profile < ActiveRecord::Base 
    belongs_to :user 
    accepts_nested_attributes_for :user 
end 

できる任意の私はここで正しい方向に向いていますか?私はMetaSearchを見てきましたが、私は瞬時に宝石なしでそれを行う方法を学びたいと思います。

+0

まず、MetaSearchを使用します。言語を学ぶだけであれば、meta_searchソースを読み、asciicastsも読み、あなたの質問に答えがあります。また、attr_accessibleの使用を忘れないでください。いくつかのメタプログラミングを学びなさい、それはあなたが考えるよりも簡単に物事をするのに役立ちます。あなたが実際に何かをする前に、あなたがやっているすべてのテスト/スペックを書いてください。次に、優れたAPIを書く方法を理解し、コードの書き方を理解し始めます。ありがとう! –

答えて

2

だから、私はこの質問への答えはあなたの関連質問に答えるために非常に似ているように起こっている、How to make parts of Profile searchable or not

は基本的に、あなたはどちらかの列ごとの可視性の設定にチェックボックスを結びつけるために必要があると思いますフラグ、または可視性レコードの作成/破棄のいずれかを選択することができます。

つまり、チェックボックスをオンにすると、そのユーザーの適切な可視性フラグ/レコードを設定する必要があります(AJAX経由で行うことができます)。チェックを外すと、適切な可視性フラグ/レコードがクリア/破棄されます。

IF、一方、あなたが話しているフォームはグローバルです。「ユーザーインデックスページでは部分的にどのような部分をレンダリングするのですか?」ある種類のフォームを管理している場合は、チェックボックスをオン/オフにしたときにセット/クリアされるブール型の列を含むテーブルをセットアップします(partial_renderings?)。それはフラグのセットだけなので

... 
<% if PartalRenderings.show_hometown %> 
    <%= render :partial => "user_hometown", :locals => {:user => @user} 
<% end %> 
... 

partial_renderings表はおそらく、単一のレコードを持っているでしょう:

その後、部分的レンダリングの周りのif文のようなものがあります。

次に、PartialRenderingsモデルは基本的には空です。なぜなら、ブール値をチェックするだけだからです。

最後に、partial_renderingsテーブルは次のように構成することができます部分レンダリングが、ユーザー単位である

id | show_hometown | show_phone_number | show_real_name | ...etc... 
-------------------------------------------------------------------- 
1 | true   | false    | false   | ... 

場合、partial_renderings表は、指定したユーザーにそれを結ぶために、追加のuser_idフィールドが必要になりますしたがって、ユーザーは、どのようなものがレンダリングされるかを決定することができます。この場合、1つのレコードを複数持つことになります。ユーザーごとに1つのレコードがあります。

関連する問題