我想在我的create
操作中加載使用AJAX的部分。從教程中我知道這樣做的方法是在respond_to
塊中單獨包含format.js
行,並創建create.js.erb
文件。但我的代碼在我需要執行的create
操作中。如果我將所有這些代碼放入format.js {}
塊中,則不會加載該部分。我想我不確定這個區塊應該包含什麼內容?format.js vs Rails中的format.html
這類作品:
def create
respond_to do |format|
format.html do
session[:user_params].deep_merge!(params[:user]) if params[:user]
@user = User.new(session[:user_params])
@user.current_step = session[:user_step]
if params[:prev_button]
@user.previous_step
elsif @user.last_step?
@user.save
else
@user.next_step
end
session[:user_step] = @user.current_step
if @user.new_record?
render :new
else
session[:user_step] = session[:user_params] = nil
flash[:success] = "Welcome to Friends First!"
redirect_to @user
end
end
format.js
end
end
我new.html.erb看起來是這樣的:
<%= form_for(@user, :html => { :class => "form-horizontal" }, remote: true) do |f| %>
<%= render 'shared/error_messages' %>
<div id="partial">
<%= render "#{@user.current_step}", :f => f %>
</div>
<div class="control-group">
<div class="controls">
<%= f.submit "Previous", class: "btn btn-primary", :name => "prev_button" unless @user.first_step? %>
<%= f.submit "Next", class: "btn btn-primary" %>
</div>
</div>
但出於某種原因@user.first_step?
不能正常工作,一旦我加載部分。
create.js.erb
$("#partial").html("<%= escape_javascript(render('step2')) %>");
我真正想要的是這樣的:render(@user.current_step)
顯示如何調用ajax。類型必須是腳本才能調用js.erb。另外,只用一個警報('Test')測試js.erb; –
好的,我添加了我的其他代碼。 – mikeglaz