我有一个名为 /add
的页面你可以添加 Dog
on 并且表格是它自己的部分。我正在使用 Simple Form和 Twitter Bootstrap .我为主 Bootstrap 添加了文件,但是 use a gem for simple_form to work with it只是想让你知道。
狗 Controller
# new.js.erb (deleted new.html.erb)
def new
@dog = Dog.new
respond_to do |format|
format.js
end
end
# create.js.erb
def create
@dog = current_user.dogs.new(params[:dog])
respond_to do |format|
if @dog.save
format.html { redirect_to add_url, notice: 'Dog was successfully added.' }
format.json { render json: @dog, status: :created, location: @dog}
format.js
else
format.html { render 'pages/add' }
format.json { render json: @dog.errors, status: :unprocessable_entity }
end
end
end
狗/_form.html.erb
<%= simple_form_for(@dog, :remote => true) do |f| %>
<%= render :partial => "shared/error_message", :locals => { :f => f } %>
<%= f.input :name %>
<%= f.button :submit, 'Done' %>
<% end %>
这一行:<%= render :partial => "shared/error_message", :locals => { :f => f } %>
用于 Bootstrap ,因此它可以正确呈现错误 html。
页面 Controller
def add
respond_to do |format|
format.html
end
end
页面/add.html.erb
<div id="generate-form">
</div>
狗/new.js.erb
$("#generate-form").html("<%= escape_javascript(render(:partial => 'dogs/form', locals: { dog: @dog })) %>");
现在我怎样才能让它呈现部分错误,就好像它仍在我的 dogs/new.html.erb
上一样因为它是通过 AJAX 创建的?我不需要客户端验证,对吗?
编辑
共享/_error_message.html.erb
<% if f.error_notification %>
<div class="alert alert-error fade in">
<a class="close" data-dismiss="alert" href="#">×</a>
<%= f.error_notification %>
</div>
<% end %>
最佳答案
在我们的聊天中,您提到您还有一个 create.js.erb,该文件正在清除表单。
使 create.js 与 new.js.erb 相同: $("#generate-form").html("<%= escape_javascript(render(:partial => 'dogs/form', locals: { dog: @dog })) %>");
成功了。
关于ruby-on-rails - 通过 AJAX 创建表单时显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11109531/