如何使用url helper的纯Ruby对象

时间:2015-02-12 20:46:30

标签: ruby-on-rails ruby

我从一个简单的自定义模型(不是ActiveRecord,普通的ActiveModel)渲染页面,我无法获取url / path助手来生成带有id的url,如下所示:

person_path(model)
# I want: /person/3
# I get: /person

是否有任何具体的类我必须继承或运行才能实现,以便url助手可以使用我的自定义模型?

我听说过to_param,但它不起作用,至少不是这样:

  class Person
    include ActiveModel::Model 

    def id
      3
    end

    def to_param
      id.to_s
    end
  end

根据the documentation应该有效:

  

任何包含ActiveModel :: Model的类都可以与form_for一起使用,   渲染和任何其他Action View辅助方法,就像Active一样   记录对象。

但我想网址助手仍然需要缺少功能

2 个答案:

答案 0 :(得分:2)

您需要定义一个返回persisted?的{​​{1}}方法:默认实现始终返回false,这会导致rails生成一个没有id的路径。

答案 1 :(得分:1)

如果您可以分享config/routes.rb的代码或至少rake routes的结果,那将是件好事。

再次仔细检查您的路线。我认为您可能已将路由定义为单个资源resource :person,该资源不会在网址中添加ID。