我正在尝试观察在fields_for循环中生成的字段。
事情是该字段的id是动态生成的。
_form.html.erb
<% form_for @exp, :url => {:action => "update"} do |f| %>
<% f.fields_for:patterns do |builder| %>
<%= render 'pattern_fields', :f => builder %>
<% end %>
<% end %>
_pattern_fields.html.erb
Pattern: <%= f.select(:LC_PATTERN, [['stripes', 'stripes'],
['dots', 'dots'],
['lines', 'lines'],
],{ :prompt => "Please select"}
) %>
<%= observe_field("------", :frequency => 1,
:with => "'id='+value", :function => 'alert(value)')%>
我的问题是如何在fields_for标记内获取字段的id。
答案 0 :(得分:0)
我终于明白了。在互联网上找到这个解决方案......希望它可能对其他人有帮助。
在您的application_helper.rb中,添加以下功能:
def sanitized_object_name(object_name)
object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/,"_").sub(/_$/,"")
end
def sanitized_method_name(method_name)
method_name.sub(/\?$/, "")
end
def form_tag_id(object_name, method_name)
"#{sanitized_object_name(object_name.to_s)}_#{sanitized_method_name(method_name.to_s)}"
end
然后,您可以使用以下代码查看“fields_for”内生成的字段的ID:
<%=form_tag_id(f.object_name, :LC_PATTERN) %>