对于Rails中的subURL,link_to_unless_current

时间:2010-05-27 14:26:44

标签: ruby-on-rails url link-to

我正在寻找一种方法来使用与link_to_unless_current类似的内容,但是对于子网址,例如对于这两个网址:

/entity_name/
/entity_name/123

它会作为链接结果。我怎样才能在Rails中实现这一目标?

UPD:以自己的方式解决了这个问题,请Ruby精明让我知道它是不是很好。

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 :(得分:0)

我不认为存在这样的辅助方法

你必须写下面的内容

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

答案 1 :(得分:0)

在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