Когда я создаю новый объект через контроллер scaffolded, если я запускаю какой-то сценарий jquery в мою форму и эти сценарии вызывают функцию в моем контроллере, эта функция не знает об объекте, который я только что создал.Почему?
Позвольте мне объяснить:
В моем контроллере я сначала создаю свой объект:
def new
@projectmilestone = Projectmilestone.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @projectmilestone }
end
end
На мой взгляд, у меня есть форма с одним вложенным частичным:
<%= semantic_form_for [:projects,@projectmilestone] do |form| %>
<%= form.semantic_errors :state %>
<%= form.inputs do %>
<%= form.input :department_id, :as => :select, :collection => Department.all%>
<div id="stakeholders">
<%=render :partial => "stakeholders", :locals => {:users => @users }%>
</div>
<% end %>
<%= form.submit "Submit" %>
<% end %>
Часть заинтересованных сторон выглядит следующим образом:
<%= semantic_form_for [:projects,@projectmilestone], :remote => true do |form| %>
<%= form.inputs :partial do %>
<%= form.input :user_id , :as => :select, :collection => users %>
<% end %>
<% end %>
Когда я изменяю значение Department_id, в моем файле application.js запускается функция javascript:
$('#projectmilestone_department_id').live('change', function() {
// make a POST call and replace the content
var department = $('select#projectmilestone_department_id :selected').val();
if(department == "") department="0";
var milestone = $('#form_id').html();
jQuery.get('/projects/projectmilestones/update_user_select/' + department, function(data){
$("#stakeholders").html(data);
})
return false;
});
Эта функция вызывает функцию update_user_select в моем контроллере:
def update_user_select
users=""
users = User.where(:department_id=>params[:department_id]) unless params[:department_id].blank?
render :partial => "stakeholders", :locals => {:users => users }
end
Затем пользовательский фрагмент должен перезагрузиться в моей форме, но этого не происходит, поскольку @projectmilestone равен nil.
Почему@projectmilestone не сохраняется, когда я использую этот скрипт jquery, и сохраняется, когда я перехожу к функции создания моего скаффолда?
Большое спасибо !!!