2011-04-15 52 views
2

我正在制作一个项目,其中我有一个类online_score,它的属性之一是一个名为urlonline_score_url对象的数组。我现在做的是以下内容。 的意见/ online_score /新:部分数组元素的表格

<div class="urlInput">  
<% f.fields_for :url do |b| %> 
<%= render "online_score_url_fields", :f => b %> 
<% end %> 
<%= add_url_link "Add Another link", f %> 
</div> 

的意见/ online_score/_online_score_url_fields:

<div class="inputset"> 
<%= f.label :url %> <%= f.url_field :url, :value => "http://www.google.be"%> 
<%= f.label :description %> <%= f.text_field :description %> 
<%= link_to_remove_fields "remove", f %> 
</div> 

我的问题是,现在我希望能够动态地添加输入,用于online_score_url对象,我尝试做JQuery的。我试图通过渲染局部喜欢这样做,所以: 助手/ online_scores_helper.rb:

def add_url_link(name, form) 
    link_to_function name do |page|  
    online_score_url = render(:partial => 'online_score_url_fields', :f => form) 
    page << %{ 
    $('.links').append("#{ escape_javascript online_score_url }"); 
    } 
    end 
end 

的问题是那么f似乎在偏是不确定的。我认为这与我的观点中的<% f.fields_for :url do |b| %>行有关,它不会通过动态添加来执行。但我真的不知道如何解决。我想我需要form_for方法的替代方案?怎么做?

我想我的主要问题是:如何以受控方式遍历数组,并为每个元素创建一组输入形式,如部分AND能够'添加'一个或多个动态?

谢谢你的时间。

回答

1

尝试这一个:

<%= render "online_score_url_fields", :locals => {:f => b} %> 

这是怎么一回事,因为:f不为所述渲染方法的参数。所以你需要使用:object,:collection或者具有上面语法的本地人。

这里的相同:

online_score_url = render(:partial => 'online_score_url_fields', :locals => {:f => form}) 
+0

给出`未定义的方法`描述”为#`在局部的,由辅助调用。我正在尝试一些不同的东西,我会让你更新。 – KarelV 2011-04-15 17:02:07