Rails 这两种删除写法为什么效果相同呢?

douya0808 · 2012年03月28日 · 最后由 doitian 回复于 2012年03月29日 · 2485 次阅读

用 scaffold 生成的增删改查

删的代码默认是写成如下的 <%= link_to 'Destroy', product, confirm: 'Are you sure?', method: :delete %> 奇怪了 正确的写法不应该是 <%= link_to 'Destroy', product_path(product), confirm: 'Are you sure?', method: :delete %>这样吗? 为什么自动生成的代码只用一个 product 就可以实现删除功能了呢? 费解

求大哥大姐给个说法 嘿嘿

product 是 Product 的实例,传这个就会生成 product_path(product)

这里的回复速度真是神速啊 谢谢一楼 你是我在这的第一位朋友

我想问下 这可以理解成 ROR 那个传说中的约定俗成吗?

因为我觉得 Link_to 后面不是 RESTful 的路径就是:controller=> :action=>这两种形式 看到这种只把一个实例摆在那里感觉蛮费解的

继承 ActiveModel 的对象都可以这么玩 想要 hack 下的话可以这么玩

class Post << ActiveRecord::Base

  self.model_name.instance_eval do
    @route_key = 'articles'
    @singular_route_key = 'article'
  end

end


这样的话就会生成article_path(@post)这样的地址

今天正好有个地方需要研究了下

前者是改进后的写法,少敲几个字符你觉得不爽吗?基础的东西,你多玩一点自然就懂了。 楼上的在 routes 里配置不行吗? ^_^

#2 楼 @douya0808 这就是约定。。。大家共同学习

习惯成自然吗?哈哈

需要 登录 后方可回复, 如果你还没有账号请 注册新账号