Ruby on Rails – 通过jQuery / Ajax在另一个View中渲染部分

我的show-method视图中有一个链接。 此链接应在后台运行此模型的create-method,如果已完成,则应更改此视图中的样式和链接。 我不能管理它来改变其他方法的按钮。

查看

 

"default_list", :mashupdb_id => @movie.mashupdb_id),:method => "post", :remote => true, :class =>"a a-label" %>

控制器创建动作:

  respond_to do |format| format.html do if request.xhr? render :partial => "movies/delete_from_default_list", :layout => "movies/show", :status => :created end end format.json { render :json => @movie } end 

jQuery的:

 jQuery(function($) { // Callback for rendering via HTML $('.movie a[data-type=html]').on('ajax:success', function(event, data, status, xhr) { $(this).parents('div.movie').find('.label-info').replaceWith(data); }); }); 

如果我试试这个,就会发生。

如果我使用下面的链接和我的show-action,它可以工作。

   true, :class =>"a a-label" %>  

可以从另一个控制器渲染部分? 我还能做什么?

编辑:

现在我尝试使用js.erb文件更改链接。

更改控制器:

  respond_to do |format| format.html format.js { render :content_type => 'text/javascript' } format.json { render :json => @movie } end 

create.js.erb:

 if (''){ $('# .default_list').html(''); } else if (''){ $('# .default_list').html(''); } 

partial _delete_from_default_list.html.erb

   "default_list", :mashupdb_id => @movie.mashupdb_id),:method => "post", :remote => true, :class =>"a a-label" %>  

partial _add_to_default_list.html.erb

   "default_list", :mashupdb_id => @movie.mashupdb_id),:method => "post", :remote => true, :class =>"a a-label" %>  

如果我第一次单击该链接,则执行js,erb文件并更改我视图中的内容。(@ list_operation包含“add_to_list_default_list”)
现在,如果我单击更改的链接,控制器操作也会成功调用(@list_operation包含“delete_from_list_default_list”),但没有任何反应。

我在这种情况下通常做的是用格式js调用ajax调用,并在响应js.erb中执行此操作,

 $('xxxx').html("<%= raw escape_javascript( render :file => "xxxx/xxxx", :locals => { xxx: xxx ) %>"); 

在js.erb中渲染部分。

我喜欢通过本地人传递所需的实例,你可以在控制器中对其进行十分转换,无论哪种方式都可以。