Rails 3 - 如果变量包含URL的一部分?

时间:2010-09-26 21:23:31

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个变量,比如/ projects / 3 / blah blah或/ projects / 3或者只是/ projects

我想做的是在Rails中有一个IF语句,如下所示:

如果urlPath包含/ projects继续

Rails / Ruby有一个方法吗?此外,它可能不会对/ books / projects或/ authors / mr-projects / etc等内容产生误报。

jquery发布到Rails,他们进行上述评估:

$.ajax({
    url: '/navigations/sidenav',
    //data:{"urlpath":urlpath}, // 
    data: "urlpath=" + urlpath,
    success: function(e){
        $("#sideNav-container").slideDown("slow");
    }
});

3 个答案:

答案 0 :(得分:3)

在rails中,您可以使用starts_with?执行此类操作:

if params[:urlpath].starts_with? "/projects"
  #...
end

当哈希查找求值为nil时,这当然失败了。这就是try方法派上用场的地方:

if params[:urlpath].try(:starts_with?, "/projects")
  #...
end

答案 1 :(得分:1)

if params[:urlpath]
   if params[:urlpath].to_s.index('/projects') == 0 
       #...
   end
end

示例:

alt text

答案 2 :(得分:0)

if params[:urlpath].to_s.match %r{^/projects}
  ...
end

或者你可以用js

来做
'/projects'.match(/^\/projects/)
#=> ["/projects"]
'/books/projects'.match(/^\/projects/)
#=> null

也许你想检查某个视图是否已从指定的控制器呈现

if params[:controller] == 'projects'
   ...
end