我的项目中有多个链接,例如:
_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"
请帮助解决此问题
答案 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模板