【问题标题】:Rails Rendering view from ajax call来自ajax调用的Rails渲染视图
【发布时间】:2016-02-18 01:05:06
【问题描述】:

我正在尝试在使用 ajax 将参数发送到控制器后呈现视图。由于项目结构,我不得不走这条路,但控制台返回:

Started POST "/rate" for 127.0.0.1 at 2016-02-17 19:49:42 -0500
Processing by PageController#yourrate as */*
  Rendered page/yourrate.html.erb within layouts/application (0.5ms)
  Rendered Shared_Templates/_navbar.html.erb (0.5ms)
  Rendered Shared_Templates/_footer.html.erb (0.0ms)
Completed 200 OK in 188ms (Views: 187.1ms | ActiveRecord: 0.0ms)

我的 ajax 调用是:

$.ajax({
  url:"rate",
  type: "post",
  data: "start=" + start + "&finish=" + finish + "&duration=" + duration + "&distance=" + distance,
  success: function(){
    alert("Saved Successfully, distance: " + distance); //just for testing purposes.
  },
  error:function(){
    alert("Error");
  }
});

并且我的控制器具有分配给我正在传递的参数的属性。

【问题讨论】:

  • 您期待 json 响应吗?也许是javascript响应?我建议在您的 ajax 调用中将 dataType 选项设置为“json”或“script”。这样,您的控制器将知道如何正确响应。目前,它的响应似乎不是您想要的 html。
  • 这里有什么问题?我没有看到。
  • @ajporterfield 很抱歉没有更清楚,但我希望页面/yourrate.html.erb 呈现。控制台说它正在渲染它,但是我按下调用 ajax 的按钮的页面没有改变。不确定我是否应该以不同的方式解释?
  • @Toby1Kenobi 我执行此 ajax 调用的页面不会更改为我要渲染的页面,控制台说它正在渲染:page/yourrate.html.erb

标签: jquery ruby-on-rails ajax


【解决方案1】:

ajax 的重点是做一些事情没有任何页面刷新所以要使用 ajax 来更改视图,您需要将控制器呈现的所有 html 作为对 ajax 调用的响应传回然后让 javascript 用它从 ajax 响应返回的 html 替换当前页面的内容。

【讨论】:

  • 所以更好的选择是将当前页面上的内容替换为包含我想要显示给最终用户的内容的部分内容?
  • @ayounis90 也许。很难说,因为我看不到更大的图景。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多