我有一个嵌套资源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)
答案 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>