0

在 Rails 中,您如何检测当前页面是否以“.foo”结尾?

基本上,我想根据 url 中传递的内容在我的视图中显示不同的内容。类似<% if !current_page?('something/something/foo') %>但更动态的东西

4

3 回答 3

1

您可以在此处找到如何获取您正在使用的完整 url 切换导轨版本,然后在获取此 url 后,您只需将其拆分为/然后获取最后一个元素,.last如下所示:

url.split("/").last

我认为这是最简单的方法

于 2013-08-30T21:03:47.120 回答
1

我假设您正在谈论根据请求的文件类型以不同的方式响应。通常,这respond_to是为了:

class SomeController < ApplicationController
  def some_action
    respond_to do |format|
      format.html { render :new }
      format.foo { render :foo }
    end
  end
end

否则,如果您真的只想在视图内做一些事情,请执行 zeantsoi 显示的操作。这只是一种不规则。如果我对用例有更多了解,我将能够更好地回答您的问题。

于 2013-08-30T20:43:17.527 回答
1

在 Rails 3.2+ 中:

# in your controller
url = request.original_url
@ext = File.extname(url) #=> .foo

# in your view
<% if @ext == '.foo' %>
    # do this
<% else %>
    # do that
<% end %>

在 Rails 3 中:

# to retrieve the fully qualified URL
url = "#{request.protocol}#{request.host_with_port}#{request.fullpath}"
于 2013-08-30T20:43:46.403 回答