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'