Ruby on Rails链接中间点击

时间:2015-08-12 06:37:12

标签: ruby-on-rails

我的项目中有多个链接,例如:

_index.html.erb:

<%= link_to('New Project', new_project_path, :remote => true) if Project.create_authorized? %>

控制器:

def new
  @project = Account.root_account.nil? ? Project.new : Account.root_account.projects.new
end

new.js.erb:

$("#right-panel").html("<%= escape_javascript(render(:partial => 'projects/form', :locals => {:project => @project}) ) -%>");

我的问题是,当我在链接上进行鼠标中键点击(我的意思是,我想打开一个新选项卡)时,它会引发错误:

  

缺少模板缺少模板项目/ new,application / new   with {:locale =&gt; [:en],:formats =&gt; [:html],:handlers =&gt; [:erb,:builder,   :raw,:ruby,:jbuilder,:coffee,:arb]}。搜索范围:*   &#34; /home/raj/workspace/papayaheaderlabs.banana/app/views" *   &#34; /home/raj/.rvm/gems/ruby-2.0.0-p598@banana/gems/doorkeeper-2.2.1/app/views"   *&#34; /home/raj/.rvm/gems/ruby-2.0.0-p598@banana/bundler/gems/activeadmin-655e2be7a351/app/views"   *&#34; /home/raj/.rvm/gems/ruby-2.0.0-p598@banana/gems/kaminari-0.16.3/app/views"

请帮助解决此问题

3 个答案:

答案 0 :(得分:2)

要修复错误,您必须提供缺少的模板。在这种情况下,它似乎是views/projects/new.html.erb

new.js.erb提供的部分更新(由remote: true调用)在新页面的上下文中没有意义。没有现有页面可以更改部分内容! (特别是,没有#right-panel

所以你必须在这里渲染一个完整的页面,包括页脚,标题导航,所有这些。

答案 1 :(得分:0)

经过长时间的谷歌搜索,我找到了唯一一个与我的问题相关的答案,即 我只需做一件事,即禁用中键和右键单击链接。因为,我有实际发送js(java-script)请求和渲染js.erb页面(可用)的链接。但是如果右键单击或中间点击链接它发送html请求并且没有页面找到html.erb,这就是为什么它会因为“模板丢失”而引发错误。

因此,只有选项是:禁用中键和右键单击

答案 2 :(得分:-2)

您的链接看起来正确,请检查您是否添加了

//= require jquery_ujs
app.js文件中的

如果不包括jquery_ujs:remote =&gt;真的不行。 并且请求以html的形式发送,并且它正在搜索new.html.erb模板