私の Gemfile の抜粋:
gem 'rails', '3.0.3'
gem 'inherited_resources', '1.2.1'
gem 'simple_form', '1.4.0'
どのリソースについても、3 つのアクション (新規、編集、表示) に対して 1 つのビューがあります。例:
<h1><%= I18n.t('admin.form.'+action_name.downcase, :name => controller_friendly_name) %></h1>
<%= simple_form_for([:admin, resource]) do |f| %>
<%= render "admin/shared/errors" %>
<%= f.input :title,
:label => "Title",
:hint => I18n.t('admin.form.input.title.hint', :name => controller_friendly_name),
:required => true,
:error => false,
:input_html => { :class => :large, :placeholder => I18n.t('admin.form.input.title.placeholder', :name => controller_friendly_name) }
%>
<%= f.input :is_visible,
:as => :radio,
:label => "Visible",
:error => false,
:required => true,
:collection => [['Yes', true], ['No', false]],
:wrapper_class => 'checkboxes-and-radiobuttons',
:checked => true
%>
<%= render "admin/shared/validation", :f => f %>
<% end %>
<% init_javascript "MyApplication.Form.disable();" if [:show].include?(action_name.to_sym) %>
#show アクションがすべてのフィールドを無効に設定する方法をご覧ください。これは醜いです。
ビューを show.html.erb ファイルにリファクタリングできないと考えてください。
私がしたいこと:
アクションが #show の場合、simple_form ビルダーは、html タグの , を値に置き換えるカスタム ビルダーを使用し<input>
ます。<textarea>
<select>
<p>
さらに、ラジオボタン、チェックボックスをカスタマイズします。
私の最初のステップ:
# app/inputs/showvalue_input.rb
class ShowvalueInput < SimpleForm::Inputs::Base
def input
# how to change 'text_field' by <p> container ?
@builder.text_field(attribute_name, input_html_options)
end
end
それを行う方法が見つかりません。カスタム フォーム ビルダーまたはカスタム入力 (モンキー パッチを使用) ?
助けてくれてありがとう!