我正在尝试实现一个管理面板,我认为将链接指向屏幕左侧的不同选项卡并使用AJAX在屏幕右侧显示这些选项卡会很好。
我决定在我的模型资源中使用:admin
命名空间(因为我需要:id
)所以我在 router.rb :
resources :my_model do
namespace :admin do
get "panel", to: "panel#index" #The route to display the main admin panel view
# for now let just assume I have one tab:
namespace :info_tab do
get "index", to: "info_tab#index"
end
end
end
然后在我的控制器文件中,我有一个这样的层次结构:
controllers/admin/info_tab/info_tab_controller.rb
在我写的这个文件中(我不确定我是否做得对)
class Admin::InfoTab::InfoTabController < ApplicationController
def index
logger.debug("Index from info_tab_controller loaded!")
respond_to do |format|
format.js
end
end
end
我实现了此选项卡的remote: true
链接,点击后,控制器中的方法被执行,但在我的服务器日志中,我得到了这个:
Started GET "/my_model/1/admin/info_tab/index" for ::1 at 2016-11-10 22:33:55 +0100
Processing by Admin::InfoTab::InfoTabController#index as JS
No template found for Admin::InfoTab::InfoTabController#index, rendering head :no_content
Completed 204 No Content in 69ms (ActiveRecord: 0.4ms)
InfoTabController
的索引视图位于:
views/admin/info_tab/index.js.erb
我做错了什么?
这种做法我想做对吗?或者有更好的方法来构建它吗? (特别是路线)
答案 0 :(得分:0)
Rails根据类似
的内容查找视图路径 /app/views/{namespace1}/{namespace2}/{controller}/{action}
所以我假设您需要视图路径
app/views/admin/info_tab/info_tab/index.*
除非您预计会有许多不同的InfoTab
控制器(例如,几十个),否则我还建议您删除InfoTab
命名空间,因此您的控制器是:
Admin::InfoTabController < ApplicationController
在这种情况下,您当前的视图路径应该正常工作。
如果您想了解有关rails如何查看视图路径的更多信息,请查看像https://climber2002.github.io/blog/2015/04/06/digging-rails-how-rails-finds-your-templates-part-4/
这样的博客文章