我收到此错误:
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 内)
<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>
这是我的方法:
(在 onepager_controller.rb 内)
def submitEmailAddress
puts "inside submitEmailAddress"
respond_to do |format|
format.html {redirect_to root_path}
format.js
end
end
这是我的路线:
(来自我的 routes.rb )
root 'onepager#index'
post 'submitEmailAddress', to: 'onepager#submitEmailAddress'
我知道如何修复此错误吗?
答案 0 :(得分:2)
您的控制器操作有format.js
作为响应,应该呈现app/views/onepager/submitEmailAddress.js.erb
。该模板不存在。您应该创建它或者有不同的响应。
最简单的回答是format.js { render nothing: true }
,但你需要决定什么是合适的。
答案 1 :(得分:2)
您需要在app/views/onepager/submitEmailAddress.js.erb
。
由于您的控制器具有HTML格式的重定向,因此您不需要app/views/onepager/submitEmailAddress.html.erb
,但如果您删除了该重定向,或者想要支持没有JavaScript的浏览器,则您需要将HTML模板作为好。
答案 2 :(得分:0)
删除表单中的remote: true
或创建app/views/onepager/submitEmailAddress.js.erb