2009-07-01 6 views
0

私はRuby on Railsを使用しており、並べ替えようとしているテーブルがあります。 tablesorter jqueryプラグインが正しくファイルにロードされています。私はそれの前でよく呼び出されたjqueryを持っています。私はこのコードをjavascriptに持っています。Ruby on RailsのJquery Tablesorter

$(document).ready(function(){ 
    $("#myTable").tablesorter({widgets: ['zebra']}); 
    $("#business").tablesorter({sortList: [[0,0], [1,0]]}); 
}); 

私は2つのテーブルを持っています。私はコードが正しく動作しているかどうかを見るために静的なテーブルを持っています。いずれかのヘッダーをクリックして並べ替えることができます。

<table id="myTable"> 
    <thead> 
    <tr> 
     <th>Last Name</th> 
     <th>First Name</th> 
     <th>Email</th> 
     <th>Due</th> 
     <th>Web Site</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>Smith</td> 
     <td>John</td> 
     <td>[email protected]</td> 
     <td>$50.00</td> 
     <td>http://www.jsmith.com</td> 
    </tr> 
    <tr> 
     <td>Bach</td> 
     <td>Frank</td> 
     <td>[email protected]</td> 
     <td>$50.00</td> 
     <td>http://www.frank.com</td> 
    </tr> 
    <tr> 
     <td>Doe</td> 
     <td>Jason</td> 
     <td>[email protected]</td> 
     <td>$100.00</td> 
     <td>http://www.jdoe.com</td> 
    </tr> 
    <tr> 
     <td>Conway</td> 
     <td>Tim</td> 
     <td>[email protected]</td> 
     <td>$50.00</td> 
     <td>http://www.timconway.com</td> 
    </tr> 
    </tbody> 
</table> 

しかし、データベースから動的に引き出す別のテーブルもあります。私はヘッダーをクリックすると、まったく動作しません。

<table width="650" cellpadding="6" cellspacing="0" id="business"> 
    <thead> 
    <tr> 
     <th>Business Name</th> 
     <th>Address</th> 
     <th>Category</th> 
     <th>Description</th> 
    </tr> 
    </thead> 
    <% @businesses.each do |business|if !business.approved %> 
    <tbody> 
     <tr> 
     <td><a class="Contact<%=h business.id %>" href="#"><%=h business.name %></a></td> 
     <td><%=h business.address %></td> 
     <td><%=h business.business_category.name %></td> 
     <td><%=h business.description %></td> 
     </tr> 
    </tbody> 
    <% end %> 
</table> 

助けがあれば助かります。

+1

これを解決しましたか? – Dsel

+0

働いているものに戻りましょう。 – DDDD

答えて

0

idというビジネスIDでダイナミックテーブルをリクエストするためのajax呼び出しを行っているとしますか?そうであれば、表がdomに追加されたときにtablesorterメソッドを呼び出す必要があります(通常は.ajaxのsuccessメソッド内にあります)。どのようにあなたが&ビジネステーブルを挿入することを要求しているかを示すことができれば、私はあなたにさらなる手助けをすることができます。

+0

私のコードの一部が表示されませんでした。それはあなたが必要とするものですか? – Mike

0

問題のあるテーブルの出力にある繰り返しTBODYタグがtablesorterを混乱させるかどうかはわかりません。

1

問題は、不適切な構文である各行に対してTBODYタグが出力されていることです。 1つのテーブルにつき1つのTBODYが必要です。あなたのコードは次のようになります。

<tbody> 
    <% @businesses.each do |business|if !business.approved %> 
    <tr> 
     ... 
    </tr> 
    <% end %> 
</tbody> 

編集(2015年5月13日):

より良い構文ではなく、すべての結果の関連性の高い結果をデータベースに照会して、元々あったように条件を実行することであろう述べました。

<tbody> 
    <% @businesses.where(approved: false).each do |business| %> 
    <tr> 
     ... 
    </tr> 
    <% end %> 
</tbody> 

ベストプラクティスがスコープにモデルの問合せであろう:

範囲:not_approved、 - > {ここで、(承認された:偽)}

コントローラにクエリを実行:

@businesses = Business.not_approved 

、その後ビューで、結果だけを列挙:

<% @businesses.each do |business| %> 
0

これはまた、私がdjangoを使用したのと同じ問題を解決しました。タグ内の{%endfor%}を移動すると問題が解決しました