我遇到了这个问题,我可以通过单击单选按钮来呈现局部视图,但是当我单击局部内部的提交按钮以创建新用户时,用户已成功创建,但表单不会重定向到用户页面,它只是在后台创建一个新用户,因此您只有在刷新页面后才能看到新用户。有谁知道如何获取它,所以当我单击提交按钮时,它会重定向到一个页面?
index.html.erb
Listing users
<table>
<tr>
<th>Name</th>
<th>Email</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td><%= user.email %></td>
<td><%= link_to 'Show', user %></td>
<td><%= link_to 'Edit', edit_user_path(user) %></td>
<td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</table>
<%= form_tag({:action => 'preview'}, :remote => true, :'data-update-target' => 'update-container') do %>
<%= label_tag :gender, 'male' %>
<%= radio_button_tag :gender, 'male', false, :class => 'submit' %><br/>
<%= label_tag :gender, 'female' %>
<%= radio_button_tag :gender, 'female', false, :class => 'submit' %>
<%=# submit_tag 'Submit', :disable_with => 'Please wait...', :class => 'submit'
%>
users_controller.rb
class UsersController < ApplicationController
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
end
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end
def new
@user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user }
end
end
def edit
@user = User.find(params[:id])
end
# POST /users
# POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# PUT /users/1
# PUT /users/1.json
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# DELETE /users/1
# DELETE /users/1.json
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to users_url }
format.json { head :no_content }
end
end
def preview
if params[:gender] == "male"
@userd = User.new
render :partial => 'preview', :object => @userd
elsif params[:gender] == "female"
@userd = User.new
render :partial => 'preview', :object => @userd
end
end
end
_preview.html.erb
<%= form_for(@userd, remote: true) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
和我的 application.js
$(function() {
/* Convenience for forms or links that return HTML from a remote ajax call.
The returned markup will be inserted into the element id specified.
*/
$('form[data-update-target]').live('ajax:success', function(evt, data) {
var target = $(this).data('update-target');
$('#' + target).html(data);
});
$('input.submit').click(function(){ $(this).parent().submit(); return true; });
});