我正在通过带有remote:true的表单调用用户控制器更新操作。 我想在视图中呈现更新的用户html,所以我在控制器中有以下代码:

def update
  @user = User.find(params[:id])
  respond_to do |format|
    if @user.update_attributes(user_params)
      format.html {
        flash[:success] = "Profile updated"
        redirect_back fallback_location: @user
      }
      format.js { render partial: 'user', locals: { user: @user } }
    else
      format.html { render 'show' }
      format.js {}
    end
  end
end

它工作正常,服务器以正确呈现的html和状态200进行响应。问题出在我的咖啡因上:

$ ->
  $(".edit_user[data-remote]").on "ajax:success", (e, data, status, xhr) ->
    console.log(e)
    console.log(data)
    console.log(status)
    console.log(xhr)
    $(this).closest('tr').fadeOut()
    if $(this).data('action') == 'hire'
      $('#active-users').append data
    else
      $('#archive-users').append data

此代码无法执行,我也不知道为什么。 我发现,如果我从控制器文件中删除了render partial: 'user', locals: { user: @user } ,则执行(但是我当然需要这个渲染的html)。

如何解决我的脚本以正确执行? 我对JS和CoffeScript非常陌生。

===============>>#1 票数:3 已采纳

当您使用' remote: true '时,它将自动执行相应控制器动作的Javascript文件,因此在这种情况下,用户将'update'。 不需要单独的文件绑定ajax:success或类似的东西。

因此,首先更改:

format.js { render partial: 'user', locals: { user: @user } }

至:

format.js {}

然后创建一个文件views / user / update.js.erb,并在该文件中添加以下内容:

$('#active-users').append('<%= j render partial: 'user', locals: { user: @user } %>')

“ j”将转义HTML的输出,因此Javascript不会引发错误。 控制器操作完成后,会将部分内容添加到#active-users中。 当然,您也可以将所需的任何其他Javascript添加到此文件中。

  ask by P. Boro translate from so

未解决问题?本站智能推荐:

1回复

使用AJAX更新Rails模型

我才刚刚开始学习AJAX。 我当前的ajax函数似乎没有任何作用。 这是我的coffeescript文件中的函数: “ Aulas”是一个将“ Student”表和“ Seminar”表连接在一起的模型(我使用了“ Seminar”一词,因为我想避免使用“ Class”一词)。
1回复

jQuery Ajax调用后,Rails视图未更新

我处于第一个Rails项目的中间,已经到达要根据SELECT标记的值更改模型索引的ORDER BY的阶段。 我的index.html.erb中有以下onchange 那应该更新: 这将在我的coffeescript资产中调用以下方法(由于是anon函数,因此带有@前缀):
1回复

使用ajax,Rails,Coffeescript,jQuery更新列表中的记录

题 我有一个博客列表。 使用ajax,我单击“编辑”以编辑特定记录。 我编辑该记录,然后单击更新。 我仍然使用ajax淡入所有记录的列表-应该从记录列表中删除旧记录,而在其位置是具有新值的更新记录。 答:使用ajax在博客列表上执行Crud操作的代码,包括更新: blog
2回复

如何在此Rails自定义控制器操作中格式化json响应,以及如何使用Ajax?

我是前端和Rails的新手。.我对正在编写的控制器操作感到困惑。 基本上,此操作用作将通过ajax轮询调用的端点。 在网页上,该按钮将具有remote: true并在相应的js文件中调用$ ajax作为控制器。 控制器动作在被调用时仅提供2个数字。 前端将除以2并计算完成百分比,否则
1回复

Rails AJAX jQuery POST-参数未通过且数据库未更新

我是Rails的新手,在尝试使用AJAX更新或发布到数据库时遇到了麻烦。 我在开发日志中看到以下代码查询数据库,但是数据没有作为参数传递给控制器​​操作,并且数据库也未更新,尽管我可以访问flascard_id ,“ yes”和下面通过jQuery发出“成功”警报。 user_flashc
1回复

Ajax在Rails中没有任何帮助

没有远程帮助者,是否可以在Rails中将Ajax发布请求? 我正在尝试使用以下代码自己完成操作(下面的Coffeescript),现在我提交表单时遇到了ActionController :: UnknownFormat错误:
1回复

Rails 4:部分渲染后无法使用javascript(使用ajax)

我正在使用CoffeeScript执行Ajax请求,然后从我的控制器渲染部分,但之后部分已经渲染,它不能使用我以前的Javascript。 例: 最后我的home_controller动作我有: 在我的home.js.coffee : 然后在我的部分_frame.ht
1回复

Rails4:通过Ajax进行表单更新不起作用->模板错误

当用户输入有效日期时,我正在尝试更新表单中的部分。 CoffeeScript正在启动对控制器的调用,并且控制器启动“ .js.erb”操作以呈现部分表单。 我想要的是将用户输入的日期提供给“自动完成”字段,因此将仅返回并提供具有特定有效日期的值... 参见下面的代码: fligh
1回复

使用jQuery / Coffee AJAX Rails进行实时表单验证

Okey,所以我有这个问题。。。我已经有好几个星期了。 我正在做一个学校项目,应该使用Ruby on Rails和Ajax(jQuery / Coffee)进行实时表单验证。 我已经用谷歌搜索了,发现了很多插件,但是没有一个有用的教程。 我有一些似乎合法的代码,但是我需要帮助使此代码实时验
1回复

Rails Ajax远程Javascript

我有三个选择框,可动态更改其选项。 目的是寻找执行一项以上Job Employees 。 我的问题是我的CoffeeScript文件仅触发一次。 当选择第一个选项后更新并渲染局部文件时,我无法在第三个选项上触发它。 在触发javascript文件assets/javascripts/