所以我引用這個設置什麼,我試圖做的:Dynamic Partial Based on Select Box - Rails 2.3.5Rails的基礎上下拉選項顯示部分
基於一個PRODUCT_TYPE我要動態地顯示兩個不同的諧音各含剩餘形式之一領域。
的application.js
$('#capsule_project_type_id').change(function() {
$.ajax({url: '/capsules/form_partial/' + this.value});
}
的routes.rb
get '/form_partial/:id' => 'capsules#form_partial'
controller.rb
def form_partial
@project_type_id = ProjectType.find(params[:id])
end
form_partial.js.erb
<% if @project_type_id == 1 || @project_type_id == 2 %>
$('#form-details').html("<%= escape_javascript(render partial: 'form1', locals: { capsule: @capsule, f: f }) %>");
<% else %>
$('#form-details').html("<%= escape_javascript(render partial: 'form2', locals: { capsule: @capsule, f: f }) %>");
<% end %>
new.html.erb 創建表單:
<%= form_for @capsule, multipart: true do |f| %>
...
<div class="form-group">
<%= f.label :project_type_id, "Project type" %>
<%= f.select :project_type_id, ProjectType.all.collect{|p| [p.name, p.id]}, { :include_blank => "Please select a type..." }, { class: "form-control" } %>
</div>
<div id="form-details">
</div>
當我選擇下拉阿賈克斯大火,但我不斷收到這個錯誤在控制檯:
ActionView::Template::Error (undefined local variable or method `f' for #<#<Class:0x007fd298ce71e8>:0x007fd2980a0268>):
1: <% if @project_type_id == 1 || @project_type_id == 2 %>
2: $('#form-details').html("<%= escape_javascript(render partial: 'weddingfields', locals: { capsule: @capsule, f: f }) %>");
3: <% else %>
4: $('#form-details').html("<%= escape_javascript(render partial: 'showerfields', locals: { capsule: @capsule, f: f }) %>");
5: <% end %>
我在變量集合form_partial然而它不被承認。我沒有正確逃脫它嗎?
請指教。
你想用'f:f'來傳遞'{capsule:@capsule,f:f}'是什麼? – 7urkm3n
你需要在你的控制器方法中設置'@ capsule'。 – spickermann
你試過像這樣嗎?<%= j(render partial:'form1',locals:{capsule:@capsule})%>' – 7urkm3n