gpt4 book ai didi

ruby-on-rails - 可以将自定义路径附加到 Rails 路由的 'new' 路径吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:42 25 4
gpt4 key购买 nike

我正在尝试做的事情:

我正在构建一个系统,其中有不同类型的帖子。撇开模型不谈,这个问题是关于路由和 Controller 的问题

基本上 /posts/new 应该去一个索引页面,而 /posts/new/anything 应该查找类型 anything 然后构建一个用于创建新表单的表单。

我是如何尝试做到这一点的:

请随意忽略此部分,因为我可能完全走错了路。

在路由配置中:

map.connect '/posts/new', :controller => 'posts', :action => 'new_index'
map.resources :posts, :path_names => { :new => 'new/:type' }

在 Controller 中:

class PostsController
# implicit: def new_index ; end

def new
@post = class_for_type(params[:type]).new
end
end

View 有代码查看@post 的类型以确定使用哪组 View 。事实证明,这让我完成了 90% 的事情:/posts/new/quip 实际上确实将我带到了正确的页面以创建妙语,等等。 /posts/new 确实把我带到了一个索引页面。

问题是双重的。

  1. 我仍然想要像这样的便捷方法:

    <%= link_to 'New Post', new_post_path %>

    但这现在无效,因为 new_post_path 需要 :type 参数。

  2. 如果可能的话,我想使用一条路线。

最佳答案

Peter Wagenet 的解决方案给了我缺失的一 block 拼图 (:type => nil),这让我可以在一行中完成:

map.resources :posts, :path_names => { :new => 'new/:type' },
:requirements => { :type => nil }

当然,我仍然必须进入 Controller 并进行修复,以便它从 :new 操作中呈现 new_index.html.erb

(好吧,我想这不再是一行了。)

new_post_path                     # => '/posts/new/'
new_post_path(:type => 'quip') # => '/posts/new/quip'
new_post_path('quip') # => '/posts/new/quip'

关于ruby-on-rails - 可以将自定义路径附加到 Rails 路由的 'new' 路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508870/

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