2015-03-31 32 views
2

我新手使用Rails從JavaScript使用AJAX POST到Rails 4控制器,具有強大的參數

我的目的是插入song_id並從Javascript獲得通過AJAX的POST到數據庫title(MySQL的)


在我的JavaScript文件

var song_id = "23f4"; 
var title = "test"; 

$(document).ready(function() { 
jQuery.ajax({ 
     url: 'create', 
     data: "song_id=" + song_id + "&title=" + title, 
     type: "POST", 
     success: function(data) { 
     alert("Successful"); 
     }, 
     failure: function() { 
     alert("Unsuccessful"); 
     } 
    }); 
}); 


在我editor_controller.rb

class EditorController < ApplicationController 

    def new 
    @song = Song.new 
    end 

    def create 
    logger.debug("#{params[:song_id]}") 
    logger.debug("#{params[:title]}") 
    @song = Song.new(song_params) 

    if @song.save 
     redirect_to root_path 
    else 
     flash[:notice_song_failed] = true 
     redirect_to root_path 
    end 
    end 

    private 
    def song_params 
    params.require(:song).permit(:song_id, :title) 
    end 


問題是,當我運行這段代碼的Rails應用程序,控制檯注意到我,

的ActionController :: ParameterMissing在/編輯/創建

參數是丟失或值爲空:曲


我試圖使用

private 
def song_params 
    params.require(:song).permit(params[:song_id], params[:title]) 
end 

,但它不工作,並注意到我一樣,而且在終端日誌告訴我下面

開始POST「/編輯/製造」 :: 1日2015-04- 01 1點07分23秒0700

處理由EditorController#創建作爲/

參數:{ 「song_id」=> 「23f4」, 「標題」=> 「測試」}

23f4

測試

完成在1ms內


400錯誤的請求難道我錯過了在我的代碼什麼的,感謝您的進展。

回答

3

根本沒有發送歌曲參數。它看起來像你需要在jQuery.ajax調用來更新數據線,包括歌曲參數,像這樣:

data: {song: {song_id: song_id, title: title}} 
0

此:

params.require(:song).permit(params[:song_id], params[:title]) 

是說「需要‘歌’的參數,並允許'song_id'and'title'through。如果你沒有傳遞歌曲參數,你會得到一個不好的請求。

,則可以:

  1. 更改該代碼行,以消除 '歌' 的要求

  • 贊@infused說,改變你的ajax調用發送一首歌JSON對象。
  • 相關問題