アクションでAJAXを使用してパーシャルをロードしたいと思いますcreate
。チュートリアルから、これを行う方法は、ブロックに行format.js
だけを含めてファイルを作成することであることがわかります。しかし、実行する必要のあるコードがアクションに含まれています。このコードをすべてブロック内に配置すると、パーシャルはロードされません。このブロックに何を含めるべきかわからないと思いますか?respond_to
create.js.erb
create
format.js {}
この種の作品:
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)