正如sameers 之前提到的,有一篇文章展示了如何生成视图。它将使用非常方便的 rails 默认模板为您的模型创建所有视图。
如果你像我一样想要一些更可定制的东西,你可以实现以下目标。
你可以创建自己的生成器,这样你就有了这样的东西。
rails 生成视图 NAME VIEW [选项]
要实现这一点,您需要执行以下操作。
rails generate generator view
这将在 lib/generators/view/ 文件夹中为您生成一些文件。
打开 view_generator.rb 文件并添加以下代码。
class ViewGenerator < Rails::Generators::Base
source_root File.expand_path('templates', __dir__)
argument :name, type: :string
argument :action, type: :string
def generate_view
template "#{file_name}.html.erb", "app/views/#{folder_name}/#{file_name}.html.erb"
end
private
def folder_name
name.underscore
end
def file_name
action.underscore
end
def type
name.titleize.singularize
end
def down_type
name.downcase.singularize
end
def render_form
"<%= render 'form', #{down_type}: @#{down_type} %>"
end
def render_link_back
"<%= link_to 'Back', #{folder_name}_path %>"
end
end</pre>
接下来您需要创建我们正在使用 generate_view 方法中使用的实际模板的文件。
以操作 new 为例,创建一个 filelib/generators/view/new.html.erb 并添加以下内容。
<h1>New <%= type %></h1>
<%= render_form %>
<%= render_link_back %>
根据需要自定义模板视图。您还需要添加 _form.html.erb。在 view_generator.rb 文件中添加任何其他变量和逻辑即可。
这需要更多的工作,但如果您发现自己一直在生成相似的视图,那么它是值得的。
我能想到的这种方法的最佳用例是,如果您为自己的平台贴上白标签,并且需要为客户资料生成多个文件。