0

我正在尝试将 mail_form 嵌入到我的主页中。

'contacts#new' 在 'static_pages#home' 上呈现,因此我在 StaticPagesController 的主页操作中实例化 @contact 以避免“表单中的第一个参数不能包含 nil 或为空”错误。

但是我现在得到了错误数量的参数(0 代表 1..2)错误。

自从我将 ruby​​ 更新到 2.2.2 后,我看到了这种行为。

你认为这个错误是由 Ruby 的新规范引起的,还是只是我的简单代码错误?

静态页面控制器

class StaticPagesController < ApplicationController

def home
  @contact = Contact.new
end

end

视图/static_pages/home.html.erb

<section id="contact">
  <%= render template: 'contacts/new' %>
</section>

联系人控制器

class ContactsController < ApplicationController

def new
  @contact = Contact.new
end

def create
  @contact = Contact.new(contact_params)
  @contact.request = request

  if @contact.deliver
    flash.now[:notice] = "Thank you for your message. We will contact you soon!"
  else
    flash.now[:error] = "Cannot send message."
    render 'new'
  end
end

private

def contact_params
  params.require(:contact).permit(:name, :email, :message)
end

end

意见/联系人/new.html.erb

<%= form_for(@contact) do |f| %>
...
<% end %>

日志

Processing by StaticPagesController#home as HTML
Rendered contacts/new.html.erb (23.5ms)
Rendered static_pages/home.html.erb within layouts/application (238.2ms)
Completed 500 Internal Server Error in 278ms

ArgumentError (wrong number of arguments (0 for 1..2)):
app/views/contacts/new.html.erb:28:in `block in_app_views_contacts_new_html_erb___4238619170782302276_70113984753480'
4

1 回答 1

0

我将我的“byebug”版本更新为“4.0.1”,将“Web-console”更新为“2.1.2”,然后它会显示错误在哪里。其实真的很傻...

错误:

<%= form_for(@contact) do |f| %>

<%= t.email_field ... %>
...
<% end %>

正确的:

<%= form_for(@contact) do |f| %>

<%= f.email_field ... %>
...
<% end %>
于 2015-04-20T18:58:34.550 回答