【问题标题】:How to create template of the routes set in Rails 3如何创建在 Rails 3 中设置的路线模板
【发布时间】:2011-10-06 08:35:35
【问题描述】:

我将 ajax 用于 CRUD,并且在每个模型中我必须设置所有操作,但只能设置“获取”类型,像这样

get "brands/create"
get "brands/update"
get "brands/new"
get "brands/edit"
get "brands/destroy"

如何创建一组我正在使用的鬃毛,以避免重复。

第二点 - 当我尝试使用 resources :brands 时(我可以发送默认类型的 ajax 请求,如。它正确的方式吗?),有标准的重定向工作,但我不想改变它html 在每个动作中,因为我根本不使用它。现在我不渲染任何东西,动作会自动运行。

【问题讨论】:

  • 为什么一定要用GET
  • 有什么区别?反正我不能使用资源。
  • 只使用GET和使用GET/POST的区别几乎和不带降落伞或只带降落伞的跳伞一样:)

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


【解决方案1】:

首先,你真的,真的,真的不应该只做 GET,因为它会让你的应用程序非常脆弱。我可以进一步举例说明为什么不应该先解决实际问题。

为了使您的路线更加干燥,您可以在单独的模块中创建自定义路线助手并使用它们。首先在您的RAILS_ROOT/lib 文件夹中创建一个route_helpers.rb,然后让它看起来像这样:

class ActionDispatch::Routing::Mapper

  def my_resources(*args)
    args.each do |res|
      get "#{res}/create"
      get "#{res}/update"
      get "#{res}/new"
      get "#{res}/edit"
      get "#{res}/destroy"
    end
  end
end

然后你可以像这样在你的 routes.rb 中使用路由:

require 'route_helpers'

AppName::Application.routes.draw do

  my_resources :brands

end

并且不要忘记像我的示例中那样需要 route_helpers。

现在,不要!!!像我的例子那样做。我同意不要重复自己是好的,但是标准资源以它的方式生成路由是有原因的。 GET 仅用于读取,而不是创建、更新,当然也不会破坏记录。

如果您创建链接来销毁项目并且搜索引擎开始抓取您的网站以将其编入索引,它将使用 get 命令和 BAM....跟随链接。您的记录将被删除。 如果您已登录您的网站以防止这种情况发生,那么如果您的用户已登录,然后在另一个选项卡中访问我有一个 img 标签的页面并将其 src 设置为 yourdomain.com/brands/,也可能发生这种情况销毁,然后登录会话的用户浏览器将尝试获取并下载图像和 BAM .....您的记录再次被删除。

这只是几个例子,但重点是,为了您自己,不要以这种方式使用 GET 协议。

【讨论】:

  • 谢谢,现在我明白为什么不只使用 GET 了。
猜你喜欢
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多