Ruby on rails Rails:如何修复ActionView::MissingTemplate错误?
我得到这个错误:Ruby on rails Rails:如何修复ActionView::MissingTemplate错误?,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我得到这个错误: Started POST "/submitEmailAddress" for 127.0.0.1 at 2015-03-13 15:29:26 +0100 Processing by OnepagerController#submitEmailAddress as JS Parameters: {"utf8"=>"✓", "email"=>"testing@this.com", "commit"=>"OK, LET'S GO!"} submitEmailA
Started POST "/submitEmailAddress" for 127.0.0.1 at 2015-03-13 15:29:26 +0100
Processing by OnepagerController#submitEmailAddress as JS
Parameters: {"utf8"=>"✓", "email"=>"testing@this.com", "commit"=>"OK, LET'S GO!"}
submitEmailAddress
Completed 500 Internal Server Error in 12ms
ActionView::MissingTemplate (Missing template onepager/submitEmailAddress, application/submitEmailAddress with {:locale=>[:en], :formats=>[:js, :html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
* "/Users/ola/.rvm/gems/ruby-2.2.0/gems/web-console-2.0.0/lib/action_dispatch/templates"
* "/Users/ola/Documents/RailsApps/newwp/app/views"
* "/Users/ola/.rvm/gems/ruby-2.2.0/gems/videojs_rails-4.6.1/app/views"
):
app/controllers/onepager_controller.rb:22:in `submitEmailAddress'
Rendered /Users/ola/.rvm/gems/ruby-2.2.0/gems/web-console-2.0.0/lib/action_dispatch/templates/rescues/missing_template.text.erb (0.3ms)
当我尝试使用此表单提交电子邮件时:
(内部index.html.erb)
这是我的路线:
(来自myroutes.rb)
知道如何修复此错误吗?您的控制器操作将
format.js
作为响应,它将呈现app/views/onepager/submitEmailAddress.js.erb
。该模板不存在。您应该创建它,或者使用不同的响应
最简单的响应是
format.js{render nothing:true}
,但您需要决定什么是合适的。您需要在app/views/onepager/submitEmailAddress.js.erb
中创建一个视图模板
由于您的控制器具有HTML格式的重定向,因此您不需要
app/views/onepager/submitEmailAddress.HTML.erb
,但是如果您删除了该重定向,或者希望支持没有JavaScript的浏览器,你也需要HTML模板。删除表单中的remote:true
,或者创建app/views/onepager/submitEmailAddress.js.erb是否存在onepager/submitEmailAddress模板?我刚刚从respond\u to
中删除了format.js
,现在它可以工作了。这是一个问题吗(我没有respond\u to
中的format.js
,为什么它应该在那里?在respond\u to
中只有format.html{redirect\u to root\u path}
会有问题吗?)。如果你搭建了控制器,默认情况下,as scaffolding假设您同时拥有HTML视图和JS视图(对于API)。如果您不打算为此路由使用AJAX响应或API,那么删除它就可以了。至于format.html
,只要您在它之后的块中执行重定向到
,您也不需要此路由的html页面。谢谢!我现在明白了:)
<div class="row">
<div class="col-md-6 col-md-offset-3 col-sm-6 col-sm-offset-3 col-xs-8 col-xs-offset-2">
<%= bootstrap_form_tag url: '/submitEmailAddress', remote: true, html: {class: 'emailForm'} do |f| %>
<%= f.email_field :email, hide_label: true %>
<%= f.submit "OK, LET'S GO!"%>
<% end %>
</div>
</div>
def submitEmailAddress
puts "inside submitEmailAddress"
respond_to do |format|
format.html {redirect_to root_path}
format.js
end
end
root 'onepager#index'
post 'submitEmailAddress', to: 'onepager#submitEmailAddress'