0

ページのビルダーを提供する Rails プラグインを探していshow.html.erbます。

たとえば、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 %>

このようなビルダーは存在しますか?

ありがとう

EDIT:ビルダーが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

config/initializers/simple_output.rb

require_dependency 'lib/simple_output'

helpers/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 に答える