рельсы исключают для нескольких строк - PullRequest
1 голос
/ 09 января 2020

У меня есть следующий код. Этот кусок кода работает для меня. Но это выглядит некрасиво. Есть ли более чистый подход для достижения этой цели?

<% if request.original_url.exclude?("/invest/") || request.original_url.exclude?("/study/") || request.original_url.exclude?("/work/") %>
 some html tags here ...
<% end %>

Ответы [ 2 ]

1 голос
/ 09 января 2020

На самом деле exclude? определяется в Rails и определяется как противоположность include?, что было бы очень хорошо, если бы он мог получать регулярное выражение, но это не так.

Что вы что можно сделать, это сохранить в массиве подстроки, которые вы хотите проверить по request.original_url, и использовать их? чтобы проверить, вернет ли любой из них значение true, что поможет вам сохранить немного символов, но было бы хорошо, если этот список увеличится.

Вы можете попробовать что-то вроде этого:

['/invest/', '/study/', '/work/'].any? { |e| request.original_url.exclude?(e) }
0 голосов
/ 09 января 2020

Прежде всего вы должны использовать помощник и добавить в него следующие коды

exclude_ursl(request)
url_rules = ["/invest/", "/study/", "/work/"]
   url_rules.each_with_object([]) do |url,urls|
      urls << (request.original_url.exclude?(url))
    end.include?true
end

Теперь используйте его в своем представлении

<%if exclude_urls(request) %>

I don't have current such environment to test, so you can test it.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...