link_to_unless_current для subURL в Rails - PullRequest
1 голос
/ 27 мая 2010

Я ищу способ использовать что-то похожее на link_to_unless_current, но для суб-URL, например, для обоих этих URL-адресов:

/entity_name/
/entity_name/123

будет , а не будет результатом ссылки. Как мне этого добиться в Rails?

UPD: Решил это по-своему, пожалуйста, Руби подкованный, дай мне знать, если это хорошо.

module ApplicationHelper

  def link_to_unless_current_or_sub(name, options = {}, html_options = {}, &block)
    link_to_unless current_page_or_sub?(options), name, options, html_options, &block
  end

private

  def current_page_or_sub?(options)
    url_string = CGI.unescapeHTML(url_for(options))
    request = @controller.request
    if url_string.index("?")
      request_uri = request.request_uri
    else
      request_uri = request.request_uri.split('?').first
    end

    request_uri.starts_with?(url_string)
  end

end

Использование:

<%= link_to_unless_current_or_sub("Users", users_path) %>

Ответы [ 2 ]

0 голосов
/ 21 октября 2013

Работает в Rails 3.2 с некоторыми незначительными изменениями

def current_page_or_sub?(options)
  url_string = CGI.unescapeHTML(url_for(options))
  if url_string.index("?")
    request_url = request.fullpath
  else
    request_url = request.fullpath.split('?').first
  end
  request_url.starts_with?(url_string)
end
0 голосов
/ 27 мая 2010

я не думаю, что такой вспомогательный метод существует

вы должны написать что-то вроде следующего

<% if params[:id] %>
       "Home"
<% else %>
       <%= link_to "Home", { :action => "index" }) %>
<% end %>
...