gpt4 book ai didi

ruby-on-rails-3 - Rails 3 路由范围和/或嵌套

转载 作者:行者123 更新时间:2023-12-04 06:33:15 25 4
gpt4 key购买 nike

我在确定不想嵌套的路线时遇到问题。

我有以下路线:

  resources :foos
resources :bars
resources :bazs do
resources :hellos
resources :worlds
end

foo、bar 和 baz 模型都属于用户模型。我不想嵌套另一层,但我确实希望在我的 url 中有一个前缀,该前缀对应于用户的永久链接属性(类似于每个以用户名为前缀的 github 存储库)。所以我的所有 Controller 都有一个前置过滤器
  def get_scope
@user = User.find_by_permalink(params[:permalink])
end

感谢@cowboycoded 修改为_param
  class User < ActiveRecord::Base  
def to_param
permalink
end
end

我包裹了这些路线
  scope ":permalink", :as => :user do
#nested routes here
end

现在一切正常,只要我将 @user 传递给每个非索引路由。当 (@user, @foo) 已经被限定时,不得不回到我的所有 View 并用 (@user, @foo) 替换 (@foo) 似乎并不是很枯燥。

除非我弄错了,to_param 方法只是简单地替换了 :id,这样/users/:id 之类的 url 就会显示为 users/permalink 而不是 users/1。我试图在我的范围内使用这个 :id ,但它与 foo 的 :id 参数冲突并破坏了一切。也许与我缺少的路径有联系?

感谢您提出的任何建议!

最佳答案

您是否尝试过在模型中使用 to_param 方法?这将允许您覆盖默认值并使用 id 以外的其他内容,并将与 URL 助手一起使用

http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-i-to_param

文档中的示例:

class User < ActiveRecord::Base
def to_param # overridden
name
end
end

user = User.find_by_name('Phusion')
user_path(user) # => "/users/Phusion"

我不确定这与范围的配合如何,因为我还没有尝试过,但我想它值得一试。

关于ruby-on-rails-3 - Rails 3 路由范围和/或嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5125001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com