0

現在、@tasks で .find_by_status(params[:status]) を使用して、閉じられていないタスクやスティッキーでないタスクを見つけています。(4、5のいずれか)。

def self.find_by_status(status)
  status = status.to_i
  if status == 0 then
    status = 1
  else
    status = status
  end
  if status == 1 || !status then
    Task.where(["STATUS NOT IN (4,5)"])
  else
    Task.where(:status => status)
  end
end

また、これを自分のチケット モデルにもコピーして、ホームページでオープン チケットのみを検索しました。

これも付随して

<% status_active = 1 %>
<% Task.new.statuses.each do |status| %>
  <li class="<%= if (params[:status].to_i || status_active) == status[0] then "active" end %>">
    <%= link_to status[1], :controller => params[:controller], :action => params[:action], :params => { :status => status[0] } %>
  </li>

私はレールが初めてで、これをリファクタリングするのに本当に苦労しています。おそらく、これらのリンクをドロップダウン選択フィルターにすることをお勧めしますが、それにも苦労しています。

どんな助けでも大歓迎です!

4

1 に答える 1

1

このスニペット:

def self.find_by_status(status)
  if status.to_i.zero?
    Task.where(["STATUS NOT IN (4,5)"])
  else
    Task.where(:status => status.to_i)
  end
end

上記のコードと同じです(キャストした後にステータスが false になることはありませんto_i)。

ビューコードを次のようにクリーンアップできます。

<% Task.new.statuses.each do |status| %>
  <li class="<%= 'active' if (params[:status].to_i || Task::STATUS_ACTIVE) == status[0] %>">
    <%= link_to status[1], :controller => params[:controller], :action => params[:action], :params => { :status => status[0] } %>
 </li>
<% end %>

ビューにコーディングするのではなく、モデルに定数として STATUS_ACTIVE を追加することをお勧めします。

また、パラメーターを介してコントローラーとアクションを指定しているという事実は奇妙ですが、ユースケースについて詳しく知らないと、トラブルシューティングできません。

于 2013-07-30T14:15:51.437 に答える