Подскажите, как улучшить код

программирование ruby ruby on rails RoR

Привет всем.

Я быдлокодер, что меня совсем не радует.
Как можно улучшить этот код:

def show
if params[:type]=="all"
if params[:dir] =="next"
@work = Work.find(:first, :conditions => ["id > ? ", params[:id]])
if !@work
@work = Work.first
end
elsif params[:dir] =="prev"
@work = Work.find(:last, :conditions => ["id < ? ", params[:id]])
if !@work
@work = Work.last
end
else
@work = Work.find(params[:id])
end
elsif params[:type]=="site" || params[:type]=="logo" || params[:type]=="poly"
if params[:dir] =="next"
@work = Work.find(:first, :conditions => ["id > ? AND kind = ?", params[:id], params[:type]])
if !@work
@work = Work.find(:first, :conditions => ["kind = ?", params[:type]])
end
elsif params[:dir] =="prev"
@work = Work.find(:last, :conditions => ["id < ? AND kind = ?", params[:id], params[:type]])
if !@work
@work = Work.find(:last, :conditions => ["kind = ?", params[:type]])
end
else
@work = Work.find(params[:id])
end
else
@work = Work.find(params[:id])
end
end
Ответы:
Мне не кажется этот код каким-то страшным. Я не знаю ни Ruby ни вашего проекта но прекрасно понимаю что здесь происходит.
>Я быдлокодер, что меня совсем не радует.
Это осознание дорого стоит, желаю творческих успехов, коллега.
1. мне кажется у вас очень старые рельсы, обновляйте срочно, потом будет тяжелее
2. во вьюшке нужно генерировать ссылку на последующий и предидущий ворк, тогда params[:dir] вам вообще не будет нужен
в модели:
 def prev
    where('id < ?', id).last
 end
 def next
  ...


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.