【问题标题】:Rails Routes vs URL parametersRails 路由与 URL 参数
【发布时间】:2011-06-21 01:56:30
【问题描述】:

我有一个双头问题,希望你能帮助我。

作为一个上下文,我有一个带有请求模型/控制器/视图设置的 Rails 应用程序。它用于用户向另一个用户发送请求,并在更新操作中提供两个特定功能(尝试保持 RESTful) - 接受和拒绝(接受或拒绝请求)。

所以我的问题是:

  • 首先,设置用于访问特定类型操作的 url 的普遍接受的方法是什么(在这种情况下,接受或拒绝都是请求更新)?是使用参数(例如/requests/11?response=accept)传递它还是使用命名路由(例如/requests/11/accept)更好

  • 其次,如果使用命名路由,如何确定哪个命名路由负责调用控制器?我认为您可以使用request.url() 或类似的东西来检查实际的网址(例如/requests/11/accept),但这对我来说似乎是一种脆弱的方法。我试图找到其他可能的方法来做到这一点,但似乎找不到合适的方法。

【问题讨论】:

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


    【解决方案1】:

    我更喜欢 /requests/11/accept 而不是 /requests/11?response=accept。

    接受和拒绝是会改变请求资源状态的行为,因此对单个对象进行 PUT 操作是合适的。

    您可以在路由配置中定义路由,如下所示:

    resources :requests do
      member {put :accept, :decline}
    end
    

    你会得到两条路线

    accept_request maps to {:action=>"accept", :controller=>"requests"}
    decline_request maps to {:action=>"decline", :controller=>"requests"}
    

    【讨论】:

    • 为了补充您的答案,我认为任何动作/动词都可能属于路线(IMO 是 RESTful 理想的用途)。哪里是变量/形容词,即。 page=2gender=male 可能是一个查询字符串(尽管再次常见的通常也是路由。)
    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    相关资源
    最近更新 更多