2016-04-26 15 views
0

だから<a class="buttonDone">行ですが、私はid="<%= dom_id(item) %>"です。 show.html.erbは、基本的に、特定の商品の日付が今日の日付よりも大きいか、今日の日付と等しいか、今日の日付よりも小さい場合のif-else conditionのスニペットです。Rails dom_idメソッドからHTMLクラス名を取得しますか?

問題は私のupdate.js.erbで、私が(すなわち.complete)それは、特定の条件に達すると、私は特定の.cssクラスを追加しようとしていることを確認するためにしようとしているということであり、 <a class="notDue">またはoverDueまたはdueToday行です。

私は.addClass(.complete)メソッドをjQueryに使用する必要があることを知っています。したがって、<a class="notDue" or "overDue" or "dueToday">のすべてを変更することなく、正しいクラスが変更されていることを確認するにはどうしたらいいですか?

show.html.erb

<% if item.due_date > Date.today %> 
    <% if item.done? %> 
     <a class="complete"> 
     <%= item.due_date %> 
     </a> 
     <a class="linkResults"> 
     <%= link_to "#{item.task_title}", [@todolist, item], style: "font-weight: bold;" %><br/> <br/> 
     </a> 
    <% else %> 
     <div class="oneLine"> 
     <a class="notDue"> 
      <%= item.due_date %> 
     </a> 
     <a class="linkResults"> 
      <%= link_to "#{item.task_title}", [@todolist, item], style: "font-weight: bold;" %> 
     </a> 
     <a class="buttonDone" id="<%= dom_id(item) %>"> 
      <%= form_for([@todolist, item], remote: true, method: :put) do |f| %> 
       <%= f.hidden_field :done, value: '1' %> 
       <%= f.submit 'Mark Item as Done' %> 
      <% end %> 
     </a> 
     <br/><br/> 
     </div> 
    <% end %> 
    <% elsif item.due_date == Date.today %> 
    <% if item.done? %> 
     <a class="complete"> 
     <%= item.due_date %> 
     </a> 
     <a class="linkResults"> 
     <%= link_to "#{item.task_title}", [@todolist, item], style: "font-weight: bold;" %><br/> <br/> 
     </a> 
    <% else %> 
     <div class="oneLine"> 
     <a class="dueToday"> 
      <%= item.due_date %> 
     </a> 
     <a class="linkResults"> 
      <%= link_to "#{item.task_title}", [@todolist, item], style: "font-weight: bold;" %> 
     </a> 
     <a class="buttonDone" id="<%= dom_id(item) %>"> 
      <%= form_for([@todolist, item], remote: true, method: :put) do |f| %> 
       <%= f.hidden_field :done, value: '1' %> 
       <%= f.submit 'Mark Item as Done' %> 
      <% end %> 
     </a> 
     <br/><br/> 
     </div> 
    <% end %> 
    <% else %> 
    <% if item.done? %> 
     <a class="complete"> 
     <%= item.due_date %> 
     </a> 
     <a class="linkResults"> 
     <%= link_to "#{item.task_title}", [@todolist, item], style: "font-weight: bold;" %><br/> <br/> 
     </a> 
    <% else %> 
     <div class="oneLine"> 
     <a class="overdue"> 
      <%= item.due_date %> 
     </a> 
     <a class="linkResults"> 
      <%= link_to "#{item.task_title}", [@todolist, item], style: "font-weight: bold;" %> 
     </a> 
     <a class="buttonDone" id="<%= dom_id(item) %>"> 
      <%= form_for([@todolist, item], remote: true, method: :put) do |f| %> 
       <%= f.hidden_field :done, value: '1' %> 
       <%= f.submit 'Mark Item as Done' %> 
      <% end %> 
     </a> 
     <br/><br/> 
     </div> 
    <% end %> 
    <% end %> 

update.js.erb

$("#<%= dom_id(@todoitem) %>").hide(); 
alert("<%= dom_id(@todoitem) %>"); 

applications.css

.complete { 
    border-radius: 10px; 
    background: green; 
    padding: 3px; 
    width: 30px; 
    height: 30px; 

    color: white; 
} 
+0

私は私はあなたの質問を完全に理解していないと言わなければなりません(あなたは再フォーマッティングを試みることができますか?そして、サイドノートとして、私はあなたのテンプレートで多くの繰り返しを見るので、あなたは[partial partials](http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials)に慣れるべきだと思います。 – BoraMa

+0

'@ todoitem'と' item'変数には何がありますか? –

答えて

0

することができます使用ヘルパーメソッドとそれに声明 場合

def dateClass date 
if item.due_date > Date.today 
    return 'notDue' 
elsif item.due_date == Date.today 
    return 'dueToday' 
else 
    return 'overdue' 
end 

をそのロジックを移動し、そのヘルパーメソッドを使用して、テンプレート内

<a class='<%= dateClass(item.due_date) %>'> 
    <%= item.due_date %> 
</a> 

これはあなたのテンプレートがはるかに短くすることができますし、クリーン