Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4.2多步骤向导的命名约定_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4.2多步骤向导的命名约定

Ruby on rails Rails 4.2多步骤向导的命名约定,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,轨道4.2 我已经为一个用户模型创建了一个多步骤向导,即应用程序的访问者通过4步表单注册为用户。它在当前设置中工作 然而,我不得不使用require语句来包含几个与向导相关的ruby文件。因此,Rails不会自动加载这些文件 我想重构相关的文件,以便它们遵循Rails约定并能够自动加载 当前结构-正在运行 app/wizards/user.rb用户向导模型-对每个步骤等运行验证 app/controllers/user_-wizards_-controller.rb app/views/wiza

轨道4.2

我已经为一个用户模型创建了一个多步骤向导,即应用程序的访问者通过4步表单注册为用户。它在当前设置中工作

然而,我不得不使用require语句来包含几个与向导相关的ruby文件。因此,Rails不会自动加载这些文件

我想重构相关的文件,以便它们遵循Rails约定并能够自动加载

当前结构-正在运行

app/wizards/user.rb用户向导模型-对每个步骤等运行验证

app/controllers/user_-wizards_-controller.rb

app/views/wizards/users/step1.html.erb

app/views/wizards/users/step2.html.erb

尝试解决方案

基于此,

自动加载路径中的目录被视为根目录,它们不反映名称空间。例如,app/models下面的类不在models名称空间下,任何名称空间都必须位于该目录下

例如,文件app/services/doctor_finder.rb不遵循自动加载约定,因为它定义了services::DoctorFinder而不是DoctorFinder。因此,无法自动加载该文件

我要去

模型

app/wizards/user/user.rb

app/wizards/user/base.rb

app/wizards/user/step1.rb

app/wizards/user/step2.rb

app/wizards/user/step3.rb

app/wizards/user/step4.rb


然而,我并没有走得很远。有什么想法吗?

如果要自动加载这些文件,请将其移动到服务或步骤目录中,如:

 app/services/wizards/user/step1 
rails应自动加载模块:

 module Wizards::User
    class Step1
    end
 end
根据rails版本,您需要将“服务”添加到自动加载路径

关于意见:

 render 'wizards/users/step1'

不坏,在我看来可以被认为是很好的实践。使用Rever方法允许你传递非全局变量来查看

如果要删除此行,应将UserWizardsController的视图放到user\u wizards/step1.html.xxx

或者如果您想在向导/users/step1.html.xxx中查看 您应该以这种方式确定控制器的范围:

module Wizards
  class UsersController < ApplicationController
  end
edn

这可能会有帮助:谢谢Jay-Ar。这很有帮助。我取得了一些进展。如果有人需要一个解决方案,问问我,我会告诉你我是怎么做的。
 render 'wizards/users/step1'
module Wizards
  class UsersController < ApplicationController
  end
edn