首页 > 解决方案 > 在 Ruby On Rails 5 上不刷新视图的情况下在 link_to 上渲染部分内容

问题描述

我想在不刷新页面的情况下渲染部分按钮单击。

我尝试在我的exploitation_controller

def show_content
  respond_to do |format|               
    format.js
  end
end

routes.rb

get '/exploitation/show_content', to: 'exploitation#show_content', as: 'show_content'`

<%= link_to "Show", show_content_path, :remote => true %>在我的主人看来。

然后我$('#div_id').html("<%= render :partial => 'my_partial' %>");exploitation/show_content.js.erb

它给了我以下错误:ActionController::UnknownFormat

标签: javascriptruby-on-railsbootstrap-4

解决方案


在我看来,您不确定该放在哪里delete_content.js.erb

如果是这种情况(假设您的控制器名称是functions,正如您的问题所暗示的那样),您需要将其放入app/views/functions/delete_content.js.erb. 然后您的代码应该按预期工作,并且与您在评论中链接的答案一样。

因此,在控制器中:

def delete_content
  respond_to do |format|               
    format.js
  end        
end

在您看来:

<%= link_to "Show", show_function_path, :remote => true %>

<div id = "div_id"></div>

但是,就目前而言,除非您在 中做一些非常规的事情,否则routes.rb该链接将触发控制器的show操作。您需要为 定义一个新路由delete_contents,如下所示:

路线.rb

get '/functions/delete_contents', to: 'functions#delete_contents', as: 'delete_function_contents'

并将您的链接更新为:

<%= link_to "Delete Contents", delete_function_contents_path, :remote => true %>

并在app/views/functions/delete_content.js.erb

$('#div_id').html("<%= render :partial => 'my_partial' %>");

希望对您有所帮助,让我知道您的进展情况!


推荐阅读