提前感谢您提供的任何帮助。我试过研究这一组,但我无法让它工作。
尝试在pages / home.html.erb中呈现contacts / _new.html.erb时 我得到“形式中的第一个参数不能包含零或空”
我认为这与Rails控制的控制器有关。 即使主视图来自PagesController,Rails是否知道查看我的ContactsController?我尝试了很多东西,并对此进行了很多研究。我尝试了当地人,改变了网址和行动。当它不是部分时它起作用。它在我硬编码form_for Contact.new时有效。
再次感谢!
_new.html.erb
<%= form_for @contact do |f| %>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :email %>
<%= f.text_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :comments %>
<%= f.text_area :comments, class: 'form-control' %>
</div>
<%= f.submit 'Submit',class: 'btn btn-default' %>
<% end %>
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(contact_params)
if @contact.save
redirect_to root_path, notice: "Message sent."
else
redirect_to root_path, notice: "Error occured."
end
end
private
def contact_params
params.require(:contact).permit(:name, :email, :comments)
end
end
Render with:
<%= render new_contact_path %>
in the views/pages/home.html.erb
答案 0 :(得分:1)
这是因为@contact
中pages_controller.rb
并不存在,并且目前要在form_for
中加载联系人变量,会引发此错误。
您只在contacts_controller
中定义了它,但在加载pages/home
视图时未访问它,它会去寻找@contact
您的pages_controller
方法中home
中定义的变量。
尝试将其添加到pages_controller.rb
中:
# app/controllers/pages_controller
def home
@contact = Contact.new
end