在rails 4中生成控制器时,是否可以指定操作方法?我不想使用get
方法生成所有路由。
以下是
rails g controller sessions new signin
将生成路线
get 'sessions/new'
get 'sessions/signin'
但我希望登录操作为POST
操作
post 'sessions/signin'
可以用发生器吗?
答案 0 :(得分:2)
据我所知,Rails代码中没有任何内容可以实现您所请求的功能。
controller_generator.rb
实现命令行的控制器生成器。
生成路由的代码非常短,并且不包含您请求的任何内容:
# This method creates nested route entry for namespaced resources.
# For eg. rails g controller foo/bar/baz index
# Will generate -
# namespace :foo do
# namespace :bar do
# get 'baz/index'
# end
# end
def generate_routing_code(action)
depth = regular_class_path.length
# Create 'namespace' ladder
# namespace :foo do
# namespace :bar do
namespace_ladder = regular_class_path.each_with_index.map do |ns, i|
indent("namespace :#{ns} do\n", i * 2)
end.join
# Create route
# get 'baz/index'
route = indent(%{get '#{file_name}/#{action}'\n}, depth * 2)
# Create `end` ladder
# end
# end
end_ladder = (1..depth).reverse_each.map do |i|
indent("end\n", i * 2)
end.join
# Combine the 3 parts to generate complete route entry
namespace_ladder + route + end_ladder
end
基本上它只是为每个传递的操作创建一个get
路由,并且不再提供任何功能。
无论哪种方式,您都可以在创建控制器后手动更改routes.rb
。