0

私は Rails の世界にかなり慣れていないので、しばらくこの問題に悩まされています。フレームワークに Twitter Bootstrap を使用しており、セレクト ボックスで並べ替え/フィルター処理されたテーブルを使用して、基本的な Web サイトを構築しようとしています。テーブルを作成しましたが、それをフィルタリングするための選択ボックスを取得できません。DataTables gem など、いくつか試してみましたが、正しく機能しませんでした。この作業を行うために何を使用する必要があるかわかりません。

セレクト ボックスで並べ替え/フィルター処理されたテーブルを含む基本的な Web サイトについて簡単に説明していただけると助かります。

4

1 に答える 1

1

このチュートリアルに従って理解しましたが、選択ボックスが必要だったため、機能させるためにいくつかの変更を加える必要がありました。 http://railscasts.com/episodes/240-search-sort-paginate-with-ajax?view=asciicast

これが私の新しいコードです:

index.html.erb

  <form class="form-inline"
    <p>
    <select name="state_search" class="span2">
      <option value="">Select a State</option>
      <option>----------------</option>
      <option>LA</option>
      <option>MS</option>
      <option>TX</option>
    </select>
    <select name="city_search" class="span2">
      <option value="">Select a City</option>
      <option>----------------</option>
      <option>Mandeville</option>
      <option>Covington</option>
    </select>
    <button type="submit" class="btn">GO</button>
    </p>
  </form>
  <table class="table table-striped table-bordered span8 table-condensed"     
   id="articles_table" >
    <thead class="header">
      <tr>
        <th>ID</th>
        <th>Title</th>
        <th>Description</th>
        <th>Created_At</th>
      </tr>
    </thead>
    <tbody>
      <%= render @articles %>
    </tbody>

_article.html.erb

<tr>
  <td> <%= article_counter +1 %> </td>
  <td> <%= article.Title %> </td>
  <td> <%= article.Description %> </td>
  <td> <%= article.Created_At %> </td>
</tr>

articles_controller.rb

def index
  @articles = Article.state_search(params[:state_search]).city_search(params[:city_search]).page(params[:page]).limit(50).order('Created_At DESC')
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @articles }
      format.js
    end
  end

articles.rb

def self.city_search(city_search)
    if city_search
      where('City LIKE ?', "%#{city_search}%")
    else
      scoped
    end
end
def self.state_search(state_search)
    if state_search
      where('State LIKE ?', "%#{state_search}%")
    else
      scoped
    end
end

それで、最初に、エピソードのように、その内容が部分的にレンダリングされたテーブルを作成しました。次に、2つの選択ボックスを作成し、それらに名前を付けました。1つはstate_searchで、もう1つはcity_searchでした。次に、articles.rbにアクセスして、それらの名前を定義しました。これは、名前を私のものに置き換えたことを除いて、railscastsのエピソードで行われたのと同じことです。次に、railscastsのエピソードと同じように、articles_controller.rbにアクセスして、2つの検索を追加しました。その後、2つの選択ボックスが完全に機能し、テーブルを並べ替え/フィルタリングしました。

ありがとう

于 2012-09-30T18:36:12.337 に答える