Rails:检测当前页面是否以“/ foo”结尾

时间:2013-08-30 20:39:15

标签: ruby-on-rails

如何检测当前页面是否以" .foo"结尾?在Rails?

基本上,我希望根据网址中传递的内容在我的视图中显示不同的内容。 类似于<% if !current_page?('something/something/foo') %>但更具动态性的

3 个答案:

答案 0 :(得分: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所展示的。这只是一种不规则的。如果我对用例有更多了解,我会更好地回答你的问题。

答案 1 :(得分: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}"

答案 2 :(得分:1)

您可以找到here如何获取完整的网址切换使用的版本,然后在获取此网址后,您只需要将其与 / 拆分然后使用.last获取最后一个元素:

url.split("/").last

我认为这是一种简单的方法