在视图中呈现 form_for 部分
render form_for partial in view
提前感谢您提供的任何帮助。我已经尝试对此进行了大量研究,但我无法让它发挥作用。
当试图在 pages/home.html.erb 中呈现 contacts/_new.html.erb 时
我得到 "First argument in form cannot contain nil or be empty"
我认为这与 Rails 正在查看的控制器有关。
即使主视图来自 PagesController,Rails 是否知道查看我的 ContactsController?我已经尝试了很多东西并且对此进行了很多研究。我试过当地人并改变 url 和行动。当它不是部分时它起作用。当我硬编码 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
这是因为 @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
提前感谢您提供的任何帮助。我已经尝试对此进行了大量研究,但我无法让它发挥作用。
当试图在 pages/home.html.erb 中呈现 contacts/_new.html.erb 时 我得到 "First argument in form cannot contain nil or be empty"
我认为这与 Rails 正在查看的控制器有关。 即使主视图来自 PagesController,Rails 是否知道查看我的 ContactsController?我已经尝试了很多东西并且对此进行了很多研究。我试过当地人并改变 url 和行动。当它不是部分时它起作用。当我硬编码 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
这是因为 @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