我的控制器中有以下方法:
def update_fees_collection_dates_voucher
@batch = Batch.find(params[:batch_id])
@dates = @batch.fee_collection_dates
render :update do |page|
page.replace_html "fees_collection_dates", :partial =>"fees_collection_dates_voucher"
end
end
该方法在_fees_collection_dates_voucher.html.erb文件中调用以下部分:
<%= select :fees_submission, :dates_id, @dates.map { |e| [e.full_name, e.id]},{:prompt => "#{t('select_fee_collection_date')}"},{:onChange => "#{remote_function( :url => {:action => "load_fees_voucher"},:with => "'date='+value+'&batch_id='+@batch.id") }"} %>
当选择或更改选择列表值时,partial会对load_fees_voucher方法进行远程调用。但是,我无法通过partial将@batch实例变量(从我原来的方法)中的信息传递给远程方法。如果我将@ batch.id更改为最后一行(在:with下)的硬编码值,则代码运行正常但不是当前格式。是否有不同的过程来访问部分中的实例变量?谢谢!
答案 0 :(得分:0)
您可以在partials中使用相同的实例变量。
试试这个,
<%= select :fees_submission, :dates_id, @dates.map { |e| [e.full_name, e.id]},{:prompt => "#{t('select_fee_collection_date')}"},{:onChange => "#{remote_function( :url => {:action => "load_fees_voucher"},:with => "'date='+value+'&batch_id='+#{@batch.id}") }"} %>