Ajax没有重定向

时间:2014-05-09 12:32:20

标签: jquery ruby-on-rails ajax ruby-on-rails-4

我有一个嵌套资源project/:id/keys,而.../keys/new我有一个form_for,这个表单的行为在JS中被修改,并且它假设在提交时执行POST请求。

POST请求工作正常,但问题是它将我重定向到另一个页面,更确切地说是'projects /:id / keys'的表单操作,并且找不到创建模板的错误。

def create
word = word_params[:name]
Word.creates_words word, @project
 respond_to do |format|
   format.html
   format.json {render json: word}
 end
end


$('#new_word').on "submit", (event) ->
  event.preventDefault()
  url = $(this).attr('action')
  data = $('#word_name').val()
  add_words(url, data)

add_words = (url, data_param) ->
  $.ajax
    type: 'POST'
    url: url
    data: word: {name: data_param}
    dataType: 'JSON'
    success: (json) ->
      console.log(json)

1 个答案:

答案 0 :(得分:1)

我建议您使用form_for的remote: true参数,而不是发出手动AJAX请求:

<%= form_for ..., remote: true do |f| %>
  # your form

然后,在您的创建操作中,您只需执行以下操作:

def create
  # ...
  respond_to do |format|
    format.html
    format.js {render json: word}
  end
 end

您可以阅读有关远程选项here

的更多信息

但是,如果您仍想使用自己的AJAX请求提交数据,则只需禁用提交按钮:

 <button type='button' id='some_id'>Submit</button>