我试图通过ajax将javascript变量从我的视图传递给我的控制器,根据此处显示的示例:Passing JavaScript variable to ruby-on-rails controller
我的控制器“pages_controller.rb”包含以下方法:
def test_page
@message= params[:id]
puts @message
end
相应的视图“test_page.html.erb”包含带有ajax调用的javascript,该调用是通过单击按钮触发的:
<button id="submit_button">Submit Text</button>
<script>
$("#submit_button").on('click',function(event) {
var string = "helloWorld";
$.ajax({
url: "/test/test_page/?id="+string,
type: "POST",
dataType: "text",
success: function(){
alert('Saved Successfully');
},
error:function(){
alert('Error');
}
});
});
</script>
在routes.rb中,我定义了以下路由:
post 'test/test_page/:id', to: 'pages#test_page'
然而,当我按下按钮时,我得到了定义的错误警告,在检查浏览器控制台时,我看到以下错误:
jquery.js:11007 POST https://my-website.com/test/test_page/?id=halloWelt 404 (Not Found)
但是我可以看到“rake路线”显示定义了以下路线:
POST /test/test_page/:id(.:format) pages#test_page
我已尝试在控制器中定义另一种方法并重新路由,但404错误仍然存在。我该怎么做才能解决这个404错误?
答案 0 :(得分:2)
如果您要将:id传递给该路线,可以使用以下网址:https://my-website.com/test/test_page/halloWelt
。 (即"/test/test_page/" + string
)
我相信你的AJAX,对于POST请求,如果你想要传递任何其他数据,你应该明确地传入下面的数据,而不是通过url参数。
$.ajax({
url: "/test/test_page/" + string,
type: "POST",
data: { hi: 'there' },
...