无路由匹配:使用嵌套命名空间时缺少必需的
这是我的routes.rb填充
Rails.application.routes.draw do namespace :main, path: ':master_url' do root 'sites#index' namespace :dashboard do root 'dashboards#index' #get 'masters/index' resources :masters end get "/:action" => 'sites#:action' end root 'main/sites#index' end
这是命令耙路线
main_root GET /:master_url(.:format) main/sites#index main_dashboard_root GET /:master_url/dashboard(.:format) main/dashboard/dashboards#index main_dashboard_masters GET /:master_url/dashboard/masters(.:format) main/dashboard/masters#index POST /:master_url/dashboard/masters(.:format) main/dashboard/masters#create new_main_dashboard_master GET /:master_url/dashboard/masters/new(.:format) main/dashboard/masters#new edit_main_dashboard_master GET /:master_url/dashboard/masters/:id/edit(.:format) main/dashboard/masters#edit main_dashboard_master GET /:master_url/dashboard/masters/:id(.:format) main/dashboard/masters#show PATCH /:master_url/dashboard/masters/:id(.:format) main/dashboard/masters#update PUT /:master_url/dashboard/masters/:id(.:format) main/dashboard/masters#update DELETE /:master_url/dashboard/masters/:id(.:format) main/dashboard/masters#destroy main GET /:master_url/:action(.:format) main/sites#:action root GET / main/sites#index
这是main / dashboard / masters_controller.rb
class Main::Dashboard::MastersController < ApplicationController respond_to :html, :js before_action :all_masters, only: [:index, :create, :update, :destroy] before_action :set_master, only: [:edit, :update, :destroy] before_action :init_master layout 'main' def new @master = Master.new end def create @master = Master.create(conf_params) end def update @master.update_attributes(conf_params) end def destroy @master.destroy end private def all_masters @masters = Master.all end def set_master @master = Master.find(params[:id]) end def conf_params params.require(:master).permit(:title,:url) end def init_master @master_url = Master.find_by_url(params[:master_url]) end end
关键是我想制作一个关于多站点的应用程序,所以:main命名空间取代了从Master的表中获取的动态URL之一。 感谢这篇文章早些时候这个问题解决了,但是当我在主控制器视图中部分渲染表单和链接时我面临一个新问题,我使用ajax为每个链接点击并形成发布btw,但我认为这个ajax方法不应该破坏任何东西。
主/仪表板/硕士/ index.js.erb的
$('#content').html(""); $('#master-list').html("");
… / _ index.html.erb
Master Conference
All Conference
… / _ master.html.erb
从这里我尝试编辑路径:edit_main_dashboard_master_path(编辑),它打破了错误消息所需的ID,所以我提供master_url.url,奇怪的是错误消失了
… / _ form_master.html.erb
这是现在存在的错误, 当我创建一个新的主它运行成功 , 但当我点击link_to编辑表单不会显示有关缺少id的错误 ,然后当我点击链接删除,它成功销毁 ..
Add/Edit Conference
inheritance人的错误信息
ActionView::Template::Error (No route matches {:action=>"show", :controller=>"main/dashboard/masters", :format=>nil, :id=>nil, :master_url=>#} missing required keys: [:id]): 3: Add/Edit Conference
4: