问题描述
我有一个用于创建类别的控制器,我想再有一个嵌套控制器来创建类别的语言版本。我想避免使用 new_language,edit_language,...
之类的方法并对其进行路由,我想以最好的 Rails 方式做到这一点。但我是 Rails 的新手(来自 padrino 和 Sinatra),我对路由有点迷茫。
我有我的类别控制器
module Admin
class CategoriesController < ApplicationController
before_action :authenticate_user!
before_action :find_category,only: [:show,:edit,:update]
layout 'admin'
def index
@categories = Category.all
end
..... all the others CRUD methods ....
end
end
还有另一个控制器。
module Admin
class CategoriesLanguageController < ApplicationController
before_action :authenticate_user!
before_action :find_category,:update]
def new
@category = Category.find(params[:category].to_i)
end
.... all the others CRUD methods ...
end
end
和我的路由配置。
Rails.application.routes.draw do
devise_for :users
resources :users
namespace :admin do
get '/' => 'dashboard#index'
resources :dashboard,only: [:index]
resources :categories do
collection do
get :publish_category
#get :new_lang
#post :create_lang
#get :edit
#post :update
#get :destroy
end
resources :language,only: [:new,:create,:edit]
end
end
# For details on the DSL available within this file,see https://guides.rubyonrails.org/routing.html
root to: "homepage#index"
namespace :api,defaults: { format: 'json' } do
namespace :v1 do
resources :categories,only: [:index]
end
end
end
我希望在第二个控制器下有方法 new_lang and create_lang
,默认名称为 new,create,...
。
它生成这个
admin GET /admin(.:format) admin/dashboard#index
admin_dashboard_index GET /admin/dashboard(.:format) admin/dashboard#index
publish_category_admin_categories GET /admin/categories/publish_category(.:format) admin/categories#publish_category
admin_category_language_index POST /admin/categories/:category_id/language(.:format) admin/language#create
new_admin_category_language GET /admin/categories/:category_id/language/new(.:format) admin/language#new
edit_admin_category_language GET /admin/categories/:category_id/language/:id/edit(.:format) admin/language#edit
admin_categories GET /admin/categories(.:format) admin/categories#index
POST /admin/categories(.:format) admin/categories#create
new_admin_category GET /admin/categories/new(.:format) admin/categories#new
edit_admin_category GET /admin/categories/:id/edit(.:format) admin/categories#edit
admin_category GET /admin/categories/:id(.:format) admin/categories#show
PATCH /admin/categories/:id(.:format) admin/categories#update
PUT /admin/categories/:id(.:format) admin/categories#update
DELETE /admin/categories/:id(.:format) admin/categories#destroy
但它不起作用。
ActionController::UrlGenerationError in Admin::Categories#index
错误是这条路线:
<td><%= link_to cat.internal_name,edit_admin_category_language_path(id: cat) %></td>
而且我不知道如何在另一个控制器中创建这些操作并使用 url 助手。
或者这不是最好的方法?
请问有什么建议吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)