【问题标题】:Disable :.format routes in rails3在 rails3 中禁用 :.format 路由
【发布时间】:2011-01-02 17:54:06
【问题描述】:

您能告诉我如何禁用 rails 路线中的 .:format 选项吗?我只需要html...

【问题讨论】:

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


    【解决方案1】:

    至少在 3.1.1 中,您可以将 , :format => false 添加到路由的末尾。

    在这里找到:http://guides.rubyonrails.org/routing.html#request-based-constraints 在第 3.11 节 Route Globbing 下

    例如..

    match '*pages' => 'pages#show', :format => false
    

    这将允许 params[:pages] 包含句点。

    【讨论】:

      【解决方案2】:

      http://guides.rubyonrails.org/routing.html#request-based-constraints

      这将限制您的路线只接受 html 格式:

      constraints :format => "html" do
        resources :posts do
          resources :comments
        end
      end
      

      但是,它不会从您的 rake routes 输出中删除 (.:format) 部分。

      【讨论】:

      • 我知道我迟到了,但是使用 rails 3.2.13 这会导致来自 curl 的请求呈现 404 错误,并且我的网站完全从谷歌中消失了......
      【解决方案3】:

      您可以将路线包裹在范围内(Rails 4):

      scope format: false do
        # your routes here
      end
      

      【讨论】:

      • 正是我正在搜索的内容,非常感谢!顺便说一句,也在 Rails 5 中工作。
      • 也适用于 Rails 6!
      【解决方案4】:

      如果你想要漂亮的 URL 而你不喜欢 :format => false,你可以试试这个:

      # :format must match the empty string
      constraints :format => // do
        resources :monkeys
      end
      

      即使使用with_options:format => false 选项也很麻烦,尤其是在您有很多路线的情况下。

      【讨论】:

        猜你喜欢
        • 2011-10-12
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        相关资源
        最近更新 更多