В момента използвам .find_by_status (params [: status]) на моя @tasks, за да намеря задачи, които не са затворени или лепкави (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>
Аз съм нов за релсите и наистина се боря за това. Вероятно бих предпочел да направя тези връзки в падащ филтър, но също така се боря.
Всяка помощ е оценена!
Отговори:
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
Е идентичен с горния Ви код (няма начин този статус да е невярен, след като сте го подали 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 като константа във вашия модел, вместо да го кодирате в изгледа.
Също така, фактът, че определяте контролерите и действията чрез param е странно, но без да знаете повече за вашата употреба, не мога да отстраня това.