これについて質問があります。名前の付いた部分が_return_item.html.erb
あるので、繰り返し動的にレンダリングしたいと思います。
<%= f.fields_for :return_items, return_item do |item_form| %>
some_field_input_for_return_item
<%end%>
これindex.html.erb
は次のようなものです。
<%= form_for(@return_request) do |f| %>
<div id="contact">
<!-- some_field_input_for_request_contact_info -->
</div>
<div id="itemlist">
<!-- This part is working-->
<% @return_request.return_items.each do |item| %>
<%= render :partial => "return_items/return_items", :locals => {:f => f, :return_item => item}%>
<!-- I_want_to_append_the_partial_here -->
<%end%>
</div>
<%= button_tag("Add New Item", :class=>"addItem" )%>
<%end%>
<script>
$(document).ready( function () {
$( '.addItem' ).click(function () {
$.ajax({
url: "return_requests/request_new_item",
data: {
item_num: ($( '#itemlist' ).children().length)
},
dataType: "script"
})
return false;
});
});
</script>
request_new_item
コントローラは次のようなものです。
def request_new_item
@return_item = ReturnItem.new
end
そしてここにありますrequest_new_item.js.erb
:
$("#itemlist").append('<%= j render :partial => "return_items/return_items", :locals => {:f => f, :return_item => item } %>');
ボタンを押すaddItem
と、新しいパーシャルが生成されると思いますが、実際には機能しません。コンソールはエラーを提供します:
ActionView::Template::Error (undefined local variable or method `f' for #<#<Class:0x007f5a302232b0>:0x007f5a380afea8>)
更新:モデルを投稿するのを忘れました
return_request.rb
::
class ReturnRequest < ActiveRecord::Base
has_many :return_items, :class_name=>'ReturnItem', :foreign_key=>'RMA_Nmb', :primary_key=>'RMA_Nmb'
accepts_nested_attributes_for :return_items
end
return_item.rb
:
class ReturnItem < ActiveRecord::Base
belongs_to :return_request, :class_name=>"ReturnRequest"
end
それで、誰かがこれがどのように起こるかを私に説明できますか、そして私はこれをどのように修正できますか?ありがとう