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 回答