首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4数据类型JS的远程请求回调问题

Rails 4数据类型JS的远程请求回调问题
EN

Stack Overflow用户
提问于 2018-10-03 13:35:20
回答 1查看 154关注 0票数 0

对于Rails 4.1.6、Ruby2.3.0、JQuery 1.11.1 (jquery 3.1.1、咖啡-rails 4.0.1),我将做一个简单的示例来解释我的问题:

我有一个视图,其中包含用Ajax创建的项目列表。在它上,有一个按钮可以远程创建一个新的空项:

代码语言:javascript
复制
button_to "Add Item",
          { action: :create },
          form: { id: "add_item_form" },
          remote: true

在我的Javascript上,我已经把这个事件联系起来了:

代码语言:javascript
复制
$('#add_item_form').on('ajax:success', function (e, data){
  alert('Success!');
}

控制员:

代码语言:javascript
复制
def create
  @item = Item.new()
  @item.save!
  respond_to do |format|
    format.js
  end
end

因为create方法只响应于JS,所以它将尝试呈现同名的JS视图,这很好:

create.js.erb

代码语言:javascript
复制
$('#item_list').append("<%= escape_javascript(render partial: 'item_li', locals: { item: @item }) %>")

关于部分:

_item_li.html.erb

代码语言:javascript
复制
<li>
  <%= form_for(item, remote: true) do |f| %>
    // List of item fields from model
  <% end %>
</li>

如果我运行该代码,它可以正常工作,并且警报显示“成功!”,回调将在呈现部分视图后立即执行。问题是,在发出警报的地方,我想要对新创建的项(如id)的信息做一些处理,但我无法找到一种方法,使我在控制器中创建的项返回回调函数。

由于我使用的是CoffeeScript,所以我的主javascript文件和create.js.erb无法相互通信(无法从另一个文件到达主文件上声明的函数)。

如果我改变我的控制器来做:

代码语言:javascript
复制
respond_to do |format|
  format.js
  format.json { render json: @item }
end

并将按钮上的数据类型更改为"json",我将获得回调上的项,但部分视图将永远无法到达。如果添加这两种数据类型,那么就可以在回调的"data“变量中得到create.js.erb上的所有内容。

解决这个问题的最好办法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-10-03 14:27:54

如果我正确理解了您的问题,您希望能够在回调中使用@item进行操作。

您应该能够从create.js.erb内部操作@item,而不是使用success回调。

为了测试这一点,我将删除以下内容:

$('#add_item_form').on('ajax:success', function (e, data){ alert('Success!'); }

然后向create.js.erb文件中添加一些Javascript代码:

代码语言:javascript
复制
$('#item_list').append("<%= escape_javascript(render partial: 'item_li', locals: { item: @item }) %>")
alert('Success!');
// Do whatever you want here, @item should be accessible 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52628277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档