【问题标题】:Rails 3.1 Routes with fixed structured paramsRails 3.1 具有固定结构参数的路线
【发布时间】:2011-12-26 23:28:45
【问题描述】:

我有一个短信网关,如果用户回复收到的短信,它会向我推送获取请求。

# gateway pushes following fixed style get-params 
# to my server/reply_from_gateway-action: ?id=123456&answer=Test

# => http://myserver.aaa/reply_from_gateway?id=123456&answer=Test

现在我想添加以下路由,因为 sms 网关有一个定义的 get 参数结构:

get "deactivate_via_sms?id=:id&answer=:answer" => "reminders#deactivate_via_sms"
      :as => "deactivate_via_sms"

但这不起作用,你能帮帮我吗?

【问题讨论】:

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


    【解决方案1】:

    您可以在控制器中手动从params 中提取 CGI 样式参数,您不需要(或不希望)它们在路由中:

    get "deactivate_via_sms" => "reminders#deactivate_via_sms", :as => "deactivate_via_sms"
    

    然后在RemindersController#deactivate_via_sms:

    def deactivate_via_sms
        id     = params[:id]
        answer = params[:answer]
        #...
    end
    

    【讨论】:

      【解决方案2】:

      您可以在控制器中手动从参数中提取 CGI 样式的参数,您不需要(或不希望)它们在路由中

      但在这种情况下,您不能使用诸如

      之类的帮助器
      deactivate_via_sms_path(id,answer)
      

      或者你可以使用这个代码来创建助手

      get "deactivate_via_sms?id=:id&answer=:answer" => "reminders#deactivate_via_sms"
        :as => "deactivate_via_sms"
      

      但是你的路由会失败

      我通过更改“?”解决了这个问题到路由中的“/”

      get "deactivate_via_sms/id=:id&answer=:answer" => "reminders#deactivate_via_sms"
        :as => "deactivate_via_sms"
      

      路由工作和辅助方法也工作正常

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-26
        • 1970-01-01
        • 2013-06-17
        • 2016-10-15
        • 2011-12-19
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        相关资源
        最近更新 更多