0

私はOpenStruct form for次のように私の見解で使用しています、

<%= form_for(OpenStruct.new(params[:f]), as: :f, url: product_types_path, method: :get, remote: true, html: {class: 'type'}) do |f| %>     
  <div class="field">
    <%= f.label :product_type_id %>    
    <%= foreign_key(f, :product_type_id, Asset::Product::Type) %>
  </div>
<% end %>

他のフォーム要素を非表示にしたい場合product_type_id is nil or blank or empty?

私はこれを試しました、

<% unless product_type_id.blank? %>
  <div class="field">
    <%= render 'form' %>
  </div>
<% else %>
  <p>Select Product Type</p>
<% end %>
4

1 に答える 1

0

product_type_idしたがって、私が正しいとしたら、パラメーターで受け取ったものが空白の場合、フォームをレンダリングしないことです。

フォームビルダーで変数を直接定義する代わりに、コントローラーで変数をインスタンス化することは可能ですか?

たとえば、コントローラーで:

def index
  @product_type = OpenStruct.new(params[:f])
end

そしてあなたの見解では:

<% unless @product_type.product_type_id.blank? %>
  <div class="field">
    <%= render 'form', product_type: @product_type %>
  </div>
<% else %>
  <p>Select Product Type</p>
<% end %>

そして最後にあなたの部分:

<%= form_for(product_type), as: :f, url: product_types_path, method: :get, remote: true, html: {class: 'type'}) do |f| %>     
  <div class="field">
    <%= f.label :product_type_id %>    
    <%= foreign_key(f, :product_type_id, Asset::Product::Type) %>
  </div>
<% end %>
于 2013-06-20T09:19:09.487 に答える