Ruby on rails 如何将普通Ruby对象与url帮助器一起使用
我正在从一个简单的自定义模型(不是ActiveRecord,纯ActiveModel)呈现一个页面,我无法让url/路径帮助程序生成一个带有id的url,如下所示:Ruby on rails 如何将普通Ruby对象与url帮助器一起使用,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在从一个简单的自定义模型(不是ActiveRecord,纯ActiveModel)呈现一个页面,我无法让url/路径帮助程序生成一个带有id的url,如下所示: person_path(model) # I want: /person/3 # I get: /person 是否有我必须继承或实现的具体类,以便url帮助程序与我的自定义模型一起工作 我听说了to_param的,但它不起作用,至少在以下情况下不起作用: class Person include ActiveMode
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
根据这项工作:
任何包含ActiveModel::Model的类都可以与表单_一起使用,
render和任何其他动作视图辅助方法,就像Active一样
记录对象
但是我想url帮助程序仍然需要一个缺少的函数才能工作您需要定义一个返回true
的持久化方法:默认实现总是返回false,这会导致rails生成一个没有id的路径。您需要定义一个持久化?
方法,该方法返回true
:默认实现总是返回false,这会导致rails生成一个没有id的路径。您需要定义一个持久化?
方法,该方法返回true
:默认实现总是返回false,这会导致rails生成一个没有id的路径。您需要定义一个持久化?
方法,该方法返回true
:默认实现总是返回false,这会导致rails生成一个没有id的路径。如果您可以共享config/routes.rb
中的代码,或者至少共享rake routes
中的结果,那就好了
再次检查你的路线。我想您可能已经将路由定义为一个单一的资源resource:person
,它不会向url添加ID。如果您可以共享config/routes.rb
中的代码,或者至少是rake routes
中的结果,那就太好了
再次检查你的路线。我想您可能已经将路由定义为一个单一的资源resource:person
,它不会向url添加ID。如果您可以共享config/routes.rb
中的代码,或者至少是rake routes
中的结果,那就太好了
再次检查你的路线。我想您可能已经将路由定义为一个单一的资源resource:person
,它不会向url添加ID。如果您可以共享config/routes.rb
中的代码,或者至少是rake routes
中的结果,那就太好了
再次检查你的路线。我认为您可能已将路由定义为单一资源resource:person
,它不会向url添加ID。将定义为_param
应该有效。你是如何尝试实现这个方法的?不,这就是我在问题中提到的。但我刚刚添加了一个小示例,说明我希望to_param
如何工作。代码是正确的,应该可以工作。请检查您的routes.rb
文件中是否有resources:people
-我复制了您发布的确切型号代码,并且person\u path(person.new)
获取了我的/people/3
,而不仅仅是“/people”将定义为
。你是如何尝试实现这个方法的?不,这就是我在问题中提到的。但我刚刚添加了一个小示例,说明我希望to_param
如何工作。代码是正确的,应该可以工作。请检查您的routes.rb
文件中是否有resources:people
-我复制了您发布的确切型号代码,并且person\u path(person.new)
获取了我的/people/3
,而不仅仅是“/people”将定义为
。你是如何尝试实现这个方法的?不,这就是我在问题中提到的。但我刚刚添加了一个小示例,说明我希望to_param
如何工作。代码是正确的,应该可以工作。请检查您的routes.rb
文件中是否有resources:people
-我复制了您发布的确切型号代码,并且person\u path(person.new)
获取了我的/people/3
,而不仅仅是“/people”将定义为
。你是如何尝试实现这个方法的?不,这就是我在问题中提到的。但我刚刚添加了一个小示例,说明我希望to_param
如何工作。代码是正确的,应该可以工作。请检查您的routes.rb
文件中是否有resources:people
-我复制了您发布的确切型号代码,并且person\u path(person.new)
获取了我的/people/3
,而不仅仅是“/people”argghhh!我知道那些路线看起来有些不同。。。他们都错过了(:id)部分argghhh!我知道那些路线看起来有些不同。。。他们都错过了(:id)部分argghhh!我知道那些路线看起来有些不同。。。他们都错过了(:id)部分argghhh!我知道那些路线看起来有些不同。。。他们都错过了(:id)部分谢谢!花了大约一个小时寻找解释,没有人指出持续性?
很重要,或者应该在什么时候使用。谢谢!花了大约一个小时寻找解释,没有人指出持续性?
很重要,或者应该在什么时候使用。谢谢!花了大约一个小时寻找解释,没有人指出持续性?很重要,或者应该在什么时候使用。谢谢!花了大约一个小时寻找解释,没有人指出持续性?很重要,或者应该在什么时候使用它。