我正在尝试在Index.html.erb上使用Ajax构建一个问答应用程序。我设法使表单远程加载,但是在保存记录时,AJAX不起作用,并且用户被带到正常的show.html.erb。除了尚未启动的Ajax之外,其他一切都很好。
我的代码如下:
index.html.erb (包含一部分用于输入,一部分用于结果)
<div>
<h3 class="section_title"> Q&A </h3>
<hr>
<div id="qanda-form" style="display:none;"> </div>
</div>
<div id="qandas">
<%= render 'qandas/qanda' %>
</div>
_qanda.html.erb (是部分结果)
<% @qandas.each do |my_qanda| %>
<div class="col-md-9">
<div>
Created <%= local_time(my_qanda.created_at) %>, by <%= User.find_by(id: my_qanda.user_id).full_name %>
</div>
</div>
<% end %>
_form.html.erb (是输入表单-已通过Cocoon嵌套了表单)
<%= simple_form_for @qanda, remote: true do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<div class="col-md-12 form-inputs">
<div class="col-md-8">
<%= f.input :title, label: 'Q&A Title:' %>
</div>
</div>
<div class="qandasquestions">
<%= f.simple_fields_for :qandasquestions do |builder| %>
<% render 'qandas/qandasquestion_fields', f: builder %>
<% end %>
<div class="links btn-group" style="min-height: 34px !important">
<%= f.button :submit, "Publish Q&A", class: "btn btn-default" %>
<%= link_to_add_association 'Add Question', f, :qandasquestions, class: 'btn btn-default', data: {association_insertion_node: '.qandasquestions', association_insertion_method: :append} %>
<%= link_to 'Back', qandas_path, class: "btn btn-default" %>
<%= f.input :company, :as => :hidden, :input_html => {:value => current_user.company} %>
</div>
</div>
<% end %>
控制器:
def index
@qandas = Qanda.all
respond_to do |format|
@qandas = Qanda.all
format.html
format.json
end
end
def create
@qanda = current_user.qandas.build(qanda_params)
respond_to do |format|
if @qanda.save!
@qandas = Qanda.all
format.html { redirect_to @qanda, notice: 'Qanda was successfully created.' }
format.json {render :layout => false}
else
format.html { render :new }
format.json { render json: @qanda.errors, status: :unprocessable_entity }
end
end
end
create.js.erb
$('#qandas').html("<%= j render partial: 'qandas/qanda' %>");
$('#qanda-form').slideUp(350);
new.js.erb
$('#qanda-form').html("<%= j render 'qandas/form' %>");
$('#qanda-form').slideDown(350);
任何人都可以看到为什么Ajax无法启动吗?为什么我要重定向到传统的SHOW页面?
答案 0 :(得分:1)
尝试将您的代码更新为此,并让我知道它是否有效?
def create
@qanda = current_user.qandas.build(qanda_params)
if @qanda.save!
@qandas = Qanda.all
else
@errors = @qanda.errors
end
end