下面是我们想要动态添加到视图中的部分表单_standards.html.erb:
<p><%= f.association :standards, :collection => Standard.active_std.all(:order => 'name'), :label_method => :name, :value_method => :id :include_blank => true %></p>下面是调用_standards.html.erb的视图表单本身的_form_new.html.erb:
<%= simple_form_for @rfq do |f| %>
<div id="std">
<%= render :partial => 'standards/standards', :collection => @rfq.standards, :locals => { :f => f } %>
</div>
<%= link_to_function("Add std", nil) do |page| %>
page.insert_html :bottom, 'std', :partial => 'standards/standards', :object => @rfq.standards.build
<% end %>
<%= f.button :submit, 'Save' %>
<% end %> 此解决方案不起作用,因为link_to_function不会通过加载_standards.html.erb来响应单击。这个解决方案似乎过时了,在rails 3.1.0中不起作用。我想知道在rails 3.1.0中是否有其他解决方案可以将动态内容添加到视图页面。如果你这样做了,请不要犹豫发帖。谢谢。
发布于 2012-04-04 00:02:25
我知道这个答案在你需要它几个月后就会出现,但希望这能帮助其他遇到这个问题的人。下面是如何为您的示例动态添加一个选择框。
_form_new.html.erb
<%= simple_form_for @rfq do |f| %>
<a id="add-selection-box" href="#">Add Selection Box</a>
<div id="std"></div>
<script type="text/javascript">
$(document).ready(function(){
$("#add-selection-box").click(function() {
$("#std").append("<%= escape_javascript(render(:partial => 'standards/standards', :collection => @rfq.standards, :locals => { :f => f })) %>");
});
});
</script>
<% end %>下面是如何使用link_to_function完成此操作
_form_new.html.erb
<%= simple_form_for @rfq do |f| %>
<%= add_selection_box "Add Selection Box", @rfq.standards, f %>
<div id="std"></div>
<% end %>helpers/my_form_helper.rb
module MyFormHelper
def add_selection_box(name, collection, form)
page = %{
partial = "#{escape_javascript(render(:partial => "standards/standards", :collection => collection, :locals => { :f => form }))}";
$("#std").append(partial);
}
link_to_function name, page
end
endhttps://stackoverflow.com/questions/8863177
复制相似问题