如果有人能帮我解决这个问题,我将不胜感激。
在我的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"}
) %>
请允许有人为我阐明这一点。
非常感谢你的帮助:)
答案 0 :(得分:1)
那是因为您无法访问部分中的表单构建器。因为它周围没有form_for
。
所以你应该选择静态标签功能。
把它放在你的部分:
<%= select_tag :prod_method, [['Method A', 'Method A'],['Method B', 'Method B']], { :prompt => "Please select"} %>
注意命名,也许你必须调整它,因为它封装在fields_for中。
修改:
实际上你的尝试应该产生错误,请检查你的rails服务器控制台,因为AJAX调用会在浏览器中显示错误。