0

我正在寻找一个提供show.html.erb页面构建器的 Rails 插件。

例如,使用 SimpleForm,new.html.erb页面可能如下所示:

<%= simple_form_for(@user, :url => user_registration_path, :html => ... }) do |f| %>
  <%= f.input :email, :required => true %>
  <%= f.input :password, :required => true %>
  <%= f.input :password_confirmation, :required => true %>
  ...
<% end %>

但是我无法找到仅显示字段的等价物。

生成的show.html.erb页面如下所示:

<p>
  <b>Email:</b>
  <%= @user.email %>
</p>
...

但我想要类似的东西:

<%= simple_display_for(@user, :html => ... }) do |d| %>
  <%= d.output :email %>
  <%= d.output :name %>
  ...
<% end %>

这种建设者存在吗?

谢谢

编辑:如果构建者使用 Twitter Bootstrap,那就更好了 :)

4

1 回答 1

2

我不知道任何宝石,但这里有一个如何自己构建此功能的简单示例,您可以对其进行扩展:

lib/simple_output.rb

class SimpleOutput
  def initialize(resource)
    @resource = resource
  end

  def output(attribute)
    @resource.send attribute
  end
end

配置/初始化程序/simple_output.rb

require_dependency 'lib/simple_output'

助手/simple_output_helper.rb

module SimpleOutputHelper
  def simple_output_for(resource, options={}, &block)
    content_tag :div, yield(SimpleOutput.new(resource)), options[:html] || {}
  end
end

用户/show.html.erb

<%= simple_output_for(@user, html: { style: "background-color: #dedede" }) do |r| %>
  <%= r.output :name %>
  <%= r.output :email %>
<% end %>

现在,显然这只是一个非常简单的例子,但希望它能让你走上正确的道路。查看 simple_form 源代码,了解它们如何组织代码,以及它们如何“类型转换”字段。simple_form 代码库非常干净且易于使用 Ruby,是 gem 应该是什么样子的一个很好的例子。

于 2012-10-12T21:15:17.477 回答