使用AJAX POST从javascript到带有Strong参数的Rails4控制器
Using AJAX POST from javascript to Rails 4 controller with Strong parameter
我是Rails 的新手
我的目的是将通过AJAX POST从Javascript接收到的song_id
和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 at/editor/create
param丢失或值为空:song
我正在尝试使用
private
def song_params
params.require(:song).permit(params[:song_id], params[:title])
end
但它不起作用,并注意到我一样,而且在下面的终端日志中告诉我
已于2015-04-01 01:07:23+0700 为:1启动POST"/editor/create"
EditorController处理#创建为/
参数:{"song_id"=>"23f4","title"=>"test"}
23f4
测试
在1ms 中完成400个错误请求
我的代码中遗漏了什么吗,谢谢Advance。
您根本没有发送歌曲参数。看起来您需要更新jQuery.ajax
调用中的数据行,以包含歌曲参数,如下所示:
data: {song: {song_id: song_id, title: title}}
这:
params.require(:song).permit(params[:song_id], params[:title])
正在说"需要‘song’参数,并允许‘song_id’和‘title’通过。如果你不传递song参数,你会收到一个错误的请求。
您可以:
- 更改该行代码以删除对"歌曲"的要求
或
- 就像@infilted所说的,更改ajax调用以发送一个song JSON对象
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 参数变量出现ngTable指令问题
- AngularJS:我可以跳过函数参数回调吗
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 要求未定义JS回调参数
- 我的jQuery插件参数没有正确启动,遇到了问题
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- jquery设置为使用参数运行
- Javascript”;类“;带有参数的扩展
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- MVC 3页面导航和使用javascript传递参数
- 从查询字符串参数推断出正确的数据类型
- 传递包含'%的参数'在URL中
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用AJAX POST从javascript到带有Strong参数的Rails4控制器