功能还可以,现在我需要使用像提交表单这样的ajax而不加载页面。
这是我的工作如下:
视图:
<%= form_for :accept, url: accept_path(:id => applicants.id), action: :accept, method: :put do |f| %>
<%= f.hidden_field :accept, :value => '1' %>
<div id="acc" class="btn btn-success">Accept</div>
<% end %>
控制器:
def accept
@accpt = Apply.find(params[:id])
if @accpt.update_attributes(accept_params)
flash[:success] = "Accepted"
#redirect_to home_path
else
render 'accept'
end
end
的Ajax:
script type="text/javascript">
$(document).on("click", '#acc', function() {
$.ajax({
url: "accept",
type: "PUT",
dataType: "json",
data: { id: $(this).id },
complete: function() {},
success: function(data, textStatus, xhr) {
editor.setValue(data.file_content)
},
error: function() {
alert("Ajax error!")
}
});
});
</script>
路线
put 'accept/:id' => 'applicants#accept', as: :accept
现在显示ajax错误。
我如何找到解决方案?
答案 0 :(得分:0)
试试这个:
<div id="acc" class="btn btn-success" data-applicant=<%= applicants.id %>>Accept</div>
和
data: { id: $(this).data("applicant")},
答案 1 :(得分:0)
我认为您应该将其更改为使用核心Rails AJAX功能 - 在处理AJAX时,Rails已经消除了JS中的所有复杂性:
摆脱您发布的所有自定义AJAX javascript。
查看:
<%= form_for :accept, url: accept_path(:id => applicants.id), action: :accept, method: :put, remote: true do |f| %>
<%= f.hidden_field :accept, :value => '1' %>
<%= f.submit 'Accept', class: 'btn btn-success' %>
<% end %>
控制器:
def accept
@accpt = Apply.find(params[:id])
if @accpt.update_attributes(accept_params)
render 'accept'
else
render 'error'
end
end
在/ views / controller_name /中添加一个accept.js文件:
editor.setValue(data.file_content)
在/ views / controller_name /中添加error.js文件:
//code for update failed