【问题标题】:ruby on rails route params in controllerruby on rails 在控制器中路由参数
【发布时间】:2011-06-01 23:03:13
【问题描述】:

routes.rb:

match 'first/#!/:name' => 'first#first'

first_controller.rb:

class FirstController < ApplicationController
  def first
    @name = params[:name]
  end
end

但是当我渲染 url 时,@name 变量为零:http://localhost:3000/first/#!/sayuj

请帮忙

【问题讨论】:

  • Hash-bang URL 通常被 JavaScript 用于路由,而不是服务器端路由。你为什么要那样做?
  • 我同意 Skilldrick 的观点。我认为这里发生了一些 XY 综合症。您能否详细说明为什么需要使用 hashbang URL?

标签: ruby-on-rails routes


【解决方案1】:

URL 中第一个 # 之后的任何内容都不会(通常)发送回服务器;它仅用于客户端。

所以客户端中的 URL http://localhost:3000/first/#!/sayuj 实际上会调用服务器端的 URL http://localhost:3000/first/

查看以下帖子了解更多信息:

【讨论】:

    【解决方案2】:

    Jits 是正确的,url 中的 # 会删除 url 的其余部分,另外,我相信你的路线不正确,应该是这样的:

    match 'first/:name', :to => 'first#first'
    

    文档位于Engine yard rails 3 routes.

    【讨论】:

    • Rails 3 路由支持简写,可以让他现有的代码工作。说match 'first/:name' =&gt; 'first#first' 很好。此外,如果他在FirstController 中使用名称方法,则可以使用另一种速记方法简单地说:match 'first/name' 和 rails 并相应地将其链接起来。
    • 感谢您提供的信息,我不知道您是否可以进一步简化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多