Ruby on rails Rails:无法在另一个局部视图中使用局部视图
我试图在另一个部分视图中包含模型Ruby on rails Rails:无法在另一个局部视图中使用局部视图,ruby-on-rails,views,Ruby On Rails,Views,我试图在另一个部分视图中包含模型请求的部分表单 我有一个名为request的模型 class CreateRequests < ActiveRecord::Migration[5.0] def change create_table :requests do |t| t.string :name t.string :email t.string :phone t.string :product t.string :de
请求的部分表单
我有一个名为request
的模型
class CreateRequests < ActiveRecord::Migration[5.0]
def change
create_table :requests do |t|
t.string :name
t.string :email
t.string :phone
t.string :product
t.string :details
t.timestamps
end
end
end
表单部分我有请求/_form.html.erb
<%= form_for(request) do |f| %>
<% if request.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(request.errors.count, "error") %> prohibited this request from being saved:</h2>
<ul>
<% request.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :phone %>
<%= f.text_field :phone %>
</div>
<div class="field">
<%= f.label :product %>
<%= f.text_field :product %>
</div>
<div class="field">
<%= f.label :details %>
<%= f.text_field :details %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
但是我得到了一个错误:
NoMethodError in Products#bigmikepopular113
Showing /Users/beckah/Documents/projects/Envirovacs/app/views/requests/_form.html.erb where line #1 raised:
undefined method `model_name' for #<ActionDispatch::Request:0x007fee89b49040>
Extracted source (around line #1):
1
2
3
4
5
6
<%= form_for(request) do |f| %>
<% if request.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(request.errors.count, "error") %> prohibited this request from being saved:</h2>
<ul>
产品中的命名错误#bigmikepopular113
显示/Users/beckah/Documents/projects/Envirovacs/app/views/requests/_form.html.erb,其中第1行出现:
未定义的方法“model_name”#
提取的源(第1行附近):
1.
2.
3.
4.
5.
6.
禁止保存此请求:
Products#bigmikepopular113
是包含原始部分的控制器视图,因此基本上结构是
products/bigmikepopular113.html.erb
->static\u pages/\u requestquote.html.erb
->requests/\u form.html.erb
<%= form_for(request) do |f| %>
<% if request.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(request.errors.count, "error") %> prohibited this request from being saved:</h2>
<ul>
<% request.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :phone %>
<%= f.text_field :phone %>
</div>
<div class="field">
<%= f.label :product %>
<%= f.text_field :product %>
</div>
<div class="field">
<%= f.label :details %>
<%= f.text_field :details %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我可以做些什么来确保我可以有一个嵌入的部分?从我所看到的,您没有在任何地方初始化新请求的创建。仅在控制器内的新操作下,但没有与该操作对应的视图。您只有视图_form.html.erb
澄清:控制器中的每个操作都必须对应于一个视图,与控制器中的操作同名。即使是局部的
因此,defnew
自动指向new.html.erb<代码>定义索引
到index.html.erb等
你有两个选择。在控制器内创建def表单
,并相应地在routes.rb中设置路由,或者直接在视图内而不是在控制器中编写语句:
删除:
<%= form_for(request) do |f| %>
相反:
<%= form_for Request.new do |f| %>
希望这会有所帮助。从我看到的情况来看,您没有在任何地方初始化新请求的创建。仅在控制器内的新操作下,但没有与该操作对应的视图。您只有视图_form.html.erb 澄清:控制器中的每个操作都必须对应于一个视图,与控制器中的操作同名。即使是局部的 因此,
defnew
自动指向new.html.erb<代码>定义索引到index.html.erb等
你有两个选择。在控制器内创建def表单
,并相应地在routes.rb中设置路由,或者直接在视图内而不是在控制器中编写语句:
删除:
<%= form_for(request) do |f| %>
相反:
<%= form_for Request.new do |f| %>
希望这会有帮助