我正在实施董事会。
现在我有 BoardsController 和 PostsController。
默认情况下,帖子由板嵌套。
我希望所有董事会的帖子列表都有使用相同 PostsController 的特殊路线
所以我在 route.rb 中做了这个
resources :notice, :controller => "posts", :board_id => 1
resources :faq, :controller => "posts", :board_id => 2
resources :qna, :controller => "posts", :board_id => 3
起初,它似乎有效。但是我意识到了一个问题。因为我在这些资源中使用了相同的“PostsController”。
执行控制器操作时与路径相关的代码相同
喜欢,
post_controller
def create
@post = Board.find(params[:board_id]).posts.build(params[:post])
if @post.save
redirect_to board_posts_path(@post.board_id)
else
render 'new'
end
end
当我去 localhost:3000/notice/new 时,它工作正常
但是当我提交新帖子时,控制器重定向到 localhost:3000/boards/1/posts/
因为 redirect_to board_posts_path(@post.board_id)
这不是我想要的。
我可以使用 if 语句来处理这个问题,但它看起来很乱。
有什么适当的解决方案吗?