ruby on rails:观察字段以显示其余形式

时间:2011-03-07 14:33:28

标签: ruby-on-rails

如果有人能帮我解决这个问题,我将不胜感激。

在我的RoR应用程序中,我有一个表单,根据在字段中输入的值,相应地显示其余的表单字段。请在下面找到我的代码

表格代码:

<p> Location: <%= f.text_field :LOC %></p>


<% f.fields_for :detail do |builder| %>
<p> Type: <%= builder.select(:DET_TYPE, [['Type A', 'Type A'],
                                         ['Type B', 'Type B'],
                                        ],{ :prompt => "Please select"}
                                        ) %>
</p>

<%= observe_field("sub_detail_DET_TYPE", :frequency => 1,
:url => { :controller => 'references', :action => :display_prod_method },
:with => "'id='+value") %>

<div id="div1"></div>

<% end %>

在我的参考控制器中:

def display_prod_method
  @type = (params[:id])
end

display_prod_method.rjs:

page.replace_html "div1", :partial => "prodMethod"

_prodMethod.html.erb partial:

<% if @type == "Type A" %>
<p>Production Method: <%= builder.select(:PROD_METHOD, [['Method A', 'Method A'],
                                                  ['Method B', 'Method B'],
                                                  ],{ :prompt => "Please select"}
                                                  ) %>
</p>
 <% end %>

问题是,如果部分中只有文本,当我选择“类型A”时,它将以我的主窗体呈现。但是,当我将下面的代码放在部分代码中时,它根本不会显示 -

<%= builder.select(:PROD_METHOD, [['Method A', 'Method A'],
                                                      ['Method B', 'Method B'],
                                                      ],{ :prompt => "Please select"}
                                                      ) %>

请允许有人为我阐明这一点。

非常感谢你的帮助:)

1 个答案:

答案 0 :(得分:1)

那是因为您无法访问部分中的表单构建器。因为它周围没有form_for

所以你应该选择静态标签功能。

把它放在你的部分:

<%= select_tag :prod_method, [['Method A', 'Method A'],['Method B', 'Method B']], { :prompt => "Please select"} %>  

注意命名,也许你必须调整它,因为它封装在fields_for中。

修改:

实际上你的尝试应该产生错误,请检查你的rails服务器控制台,因为AJAX调用会在浏览器中显示错误。