Как я могу реорганизовать этот код Ruby и Rails? - PullRequest
4 голосов
/ 17 февраля 2011

Как я могу изменить этот код?

if env["rack.request.form_hash"] && env["rack.request.form_hash"]["authenticity_token"]
  env["rack.request.form_hash"]["authenticity_token"]=env["rack.request.form_hash"]["authenticity_token"].gsub("\r\n",'')
end

Ответы [ 5 ]

4 голосов
/ 17 февраля 2011
env["rack.request.form_hash"]["authenticity_token"] = env["rack.request.form_hash"]["authenticity_token"].gsub("\r\n",'') rescue nil

или с редактированием на месте

env["rack.request.form_hash"]["authenticity_token"].gsub!("\r\n",'') rescue nil
1 голос
/ 17 февраля 2011

если у вас есть драгоценный камень и , вы можете пропустить проверку и сразу перейти к:

env["rack.request.form_hash"]["authenticity_token"].andand.gsub("\r\n",'')
0 голосов
/ 01 апреля 2011

Вместо того, чтобы использовать andand или try, я бы сделал:

if env.fetch("rack.request.form_hash", {})["authenticity_token"].to_s.gsub("\r\n",'')

или добавлю to_hash в список полезных NilClass методов (to_a, to_s,to_i и т. Д.):

class NilClass; def to_hash; {} end end

и выполните:

if env["rack.request.form_hash"].to_hash["authenticity_token"].to_s.gsub("\r\n",'')
0 голосов
/ 13 марта 2011

Я бы порекомендовал:

if (rrf = env["rack.request.form_hash"]) && rrf_at = rrf["authenticity_token"] then rrf_at.gsub!("\r\n",'') end

или аналогичный, но более короткий:

rrf_at.gsub!("\r\n",'') if (rrf = env["rack.request.form_hash"]) && rrf_at = rrf["authenticity_token"]

Это СУХОЙ, лаконичный и не использует спасательные "хаки"; -D

0 голосов
/ 17 февраля 2011

Кажется, что хэш-индексы используются везде, возможно, вы можете начать там.

   key1 = "rack.request.form_hash"
   key2 = "authenticity_token"
   env[key1] && env[key1][key2]

Ничего умного, но значительно укорачивает линию.

Что-то вроде этого может работать:

    env[key1][key2].gsub!('\r\n','') if env.has_key?(key1) && env[key1].has_key?(key2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...