我正在创建一个项目,我有一个类online_score
,它的属性之一是一个名为url
online_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>
我现在的问题是,我希望能够动态添加我尝试用JQuery做的online_score_url
个对象的输入。我尝试通过渲染部分来做到这一点:
助手/ 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
方法的替代方案?怎么做?
我想我的主要问题是:如何以受控方式迭代数组,并为每个元素创建一组输入形式,如部分并且能够“动态地”添加一个或多个?
感谢您的时间。
答案 0 :(得分:1)
试试这个:
<%= render "online_score_url_fields", :locals => {:f => b} %>
这是beacuse:f不是render方法的参数。因此,您需要使用:object,:collection或具有上述语法的本地语。
同样在这里:
online_score_url = render(:partial => 'online_score_url_fields', :locals => {:f => form} )