2016-07-13 5 views
0

私はindex.html.erbでこれを試しましたが、動作しませんでした。Rails 4.2.0:コレクションが空のときにメッセージを表示

<% @balance = 0 %> 
$('#kola tbody').empty(); 
<% @xvaziris.each do |xvaziri| %> 
$('#kola tbody').append("<%= j render xvaziri %>"); 
<% end %> 

index.js.erb

<%= render(@xvaziris) || 'No records' %> 

index.html.erb

<div class="row"> 

    <div class="col-md-10 col-md-offset-1"> 

     <div class="table-responsive myTable"> 

      <table id = "kola" class="table listing text-center"> 
       <thead> 
        <tr class="tr-head"> 
         <td>Date</td> 
         <td>Description</td> 
         <td>Amount</td> 
         <td>Discount</td> 
         <td>Paid</td> 
         <td>Balance</td> 
        </tr> 
       </thead> 

       <a href="#" class="toggle-formed" style="float: right;" ><strong>Search</strong></a> 

       <div id="sample"> 

        <%= form_tag xvaziris_path, remote: true, method: :get, class: "form-group", role: "search" do %> 
        <p> 
         <center><%= text_field_tag :search, params[:search], placeholder: "Search for.....", autofocus: true, class: "form-control-search" %> 
          <%= submit_tag "Search", name: nil, class: "btn btn-md btn-primary" %></center> 
         </p> 
         <% end %><br> 
        </div> 


        <tbody>    
         <%= render(@xvaziris) || 'No records' %> 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 

私が機能するためには、どこかindex.js.erbでそれをラップする必要があります。

ご提案は大歓迎です。

ありがとうございます。 「私は個人的に

だから、あなたの最初のソリューションを好む

<%= @xvaziris.present? ? render(@xvaziris) : "No Records" %> 

<% if @xvaziris.empty? %> 
    <em>No records</em> 
<% else %> 
    <%= render(@xvaziris) %> 
<% end %> 

それとも別の、短いが、読みにくく方法:

答えて

4

は、私はあなたがこのような何かをしたいかもしれないと思いますあなたの解決策がなぜ機能しないのか尋ねる。 renderは文字列を返すからだ。

||オペレータが短いようである(あなたのケースではどちらが空である)/それ以外の場合: あなたは、あなたがこれを行う、nilである値を持っているとしましょう。今ならば

value = nil 
value || 1 # => will return 1 

を/他の方法:あなたのケースでは今

value = nil 
result = if value 
      value 
     else 
      1 
     end 
result # => will return 1 

value = render(...) # => "" (empty string) 
value || "something else" # => "" (empty string) 

これがあることです値がtrueまたはfalseである場合は、それはboolean型にオブジェクトをキャストするだけの方法ですダブル交渉(!!演算子)を使用することができますチェックするために偽の

を返さない、空の文字列を引き起こします。私は次のように他の条件が、私はそれが働いて得た場合にindex.js.erbを変更した後

empty_string = "" 
!!empty_string # => true 

!!nil # => false 
+0

おかげで私はindex.js.erbファイルに何かをラップする必要がありますか?そのファイルからデータを取得しています。 –

+0

index.js.erbファイルで何をやっていますか? これは決して読み込まれないと思います。 – siegy22

+0

ありがとうございます。私はAjaxの方法を使っているので、そこから部分的にレンダリングしています。 –

0

。 reply.Doため

index.js.erb

<% @balance = 0 %> 
$('#kola tbody').empty(); 

<% if @xvaziris.empty? %> 
$('#kola tr').remove(); 
$('#kola tbody').append("No Results Found For Your Search..."); 
$("#kola tbody").css({"background-color": "white", "font-size": "100%", "font-weight": "900"}); 
<% else %> 
<% @xvaziris.each do |xvaziri| %> 
$('#kola tbody').append("<%= j render xvaziri %>"); 
<% end %> 
<% end %> 
関連する問題