Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 嵌套表单呈现问题_Html_Ruby On Rails_Ruby_Forms - Fatal编程技术网

Html 嵌套表单呈现问题

Html 嵌套表单呈现问题,html,ruby-on-rails,ruby,forms,Html,Ruby On Rails,Ruby,Forms,我有一个rails 4应用程序,其表单如下所示: <%= form_for @store, :html => {:multipart => true} do |f| %> <%= f.fields_for :products do |product| %> <%= render partial: "edit_product_fields", locals: {product:product} %> <% end %>

我有一个rails 4应用程序,其表单如下所示:

<%= form_for @store, :html => {:multipart => true} do |f| %>
  <%= f.fields_for :products do |product| %>
    <%= render partial: "edit_product_fields", locals: {product:product} %>
  <% end %>
  <%= f.submit %>
<% end %>
<select>
   <option value="Textbook" <% if product.type_of == "Textbook" %>selected<% end %>>Textbook</option>
   <option value="Magazine" <% if product.type_of == "Magazine" %>selected<% end %>>Magazine</option>
   <option value="Book"     <% if product.type_of == "Book"     %>selected<% end %>>Book</option>
</select>
{:multipart=>true}do | f |%>
“编辑产品”部分字段如下所示:

<%= form_for @store, :html => {:multipart => true} do |f| %>
  <%= f.fields_for :products do |product| %>
    <%= render partial: "edit_product_fields", locals: {product:product} %>
  <% end %>
  <%= f.submit %>
<% end %>
<select>
   <option value="Textbook" <% if product.type_of == "Textbook" %>selected<% end %>>Textbook</option>
   <option value="Magazine" <% if product.type_of == "Magazine" %>selected<% end %>>Magazine</option>
   <option value="Book"     <% if product.type_of == "Book"     %>selected<% end %>>Book</option>
</select>

教科书
杂志
书
当我有这样的代码时,我会得到错误:

undefined method `type_of' for #<NestedForm::Builder:0x00000102304f78>
undefined local variable or method `product' for #<#<Class:0x0000010235a248>:0x0000010684b3c0>
未定义的方法'type_of'#
但是如果我将渲染线更改为(我只是通过去掉部分:,使其不那么清晰):


我得到一个错误:

undefined method `type_of' for #<NestedForm::Builder:0x00000102304f78>
undefined local variable or method `product' for #<#<Class:0x0000010235a248>:0x0000010684b3c0>
未定义的局部变量或方法“product”#

在您的第一个代码块中,有一个
Builder
对象存储为
product

幸运的是,
Builder
提供了一个
object
方法,因此您可以访问它在表单中表示的实际对象:

<select>
   <option value="Textbook" <%= 'selected' if product.object.type_of == "Textbook" %>>Textbook</option>
   <option value="Magazine" <%= 'selected' if product.object.type_of == "Magazine" %>>Magazine</option>
   <option value="Book"     <%= 'selected' if product.object.type_of == "Book"     %>>Book</option>
</select>

教科书
杂志
书

在您的第一个代码块中,有一个
Builder
对象存储为
product

幸运的是,
Builder
提供了一个
object
方法,因此您可以访问它在表单中表示的实际对象:

<select>
   <option value="Textbook" <%= 'selected' if product.object.type_of == "Textbook" %>>Textbook</option>
   <option value="Magazine" <%= 'selected' if product.object.type_of == "Magazine" %>>Magazine</option>
   <option value="Book"     <%= 'selected' if product.object.type_of == "Book"     %>>Book</option>
</select>

教科书
杂志
书

那么
类型的\u不是ruby方法。这看起来像是一次打字检查。。。但是在duck类型的语言中,类型检查通常是不受欢迎的。无论如何,我们可以利用一个,而不是使这段代码成为一行程序。但是首先

更改后,
render
抱怨
未定义的局部变量或方法
product'`的原因是,render调用期望第一个参数为局部名称,第二个参数为局部散列:

<%= render "partial_name", local1: "a", local2: "b" %>

的类型不是ruby方法。这看起来像是一次打字检查。。。但是在duck类型的语言中,类型检查通常是不受欢迎的。无论如何,我们可以利用一个,而不是使这段代码成为一行程序。但是首先

更改后,
render
抱怨
未定义的局部变量或方法
product'`的原因是,render调用期望第一个参数为局部名称,第二个参数为局部散列:

<%= render "partial_name", local1: "a", local2: "b" %>


我想知道这块宝石保养得怎么样。上次我尝试使用嵌套表单时,它对我不起作用。所以我选择了
cocoon
gem@WaliAli我不认为OP在这里指的是一个gem,只是嵌套属性的概念。你可能是对的。我想知道这个gem维护得有多好。上次我尝试使用嵌套表单时,它对我不起作用。所以我选择了
cocoon
gem@WaliAli我不认为OP在这里指的是gem,只是嵌套属性的概念。@pdobb您可能是对的。谢谢您的回复。我尝试了这个,但是得到了#的
未定义的方法类型,正如我指出的,请尝试
product.object.class.name
product.object.is\u?教科书
而不是
类型。我甚至不确定Ruby或Rails中是否存在
type\u的
<代码>类型\u of
是我的产品模型中的一个字段。这段代码没有给我一个错误,但是对于select,我试图说“如果product.type_of等于教科书,那么将其选中”。我应该说得更清楚,抱歉,没问题。我还以为你是想把JavaScript
typeof
和Ruby混合在一起呢非常感谢你的回答和解释!谢谢你的回复。我尝试了这个,但是得到了#
未定义的方法类型,正如我指出的,请尝试
product.object.class.name
product.object.is\u?教科书
而不是
类型。我甚至不确定Ruby或Rails中是否存在
type\u的
<代码>类型\u of
是我的产品模型中的一个字段。这段代码没有给我一个错误,但是对于select,我试图说“如果product.type_of等于教科书,那么将其选中”。我应该说得更清楚,抱歉,没问题。我还以为你是想把JavaScript
typeof
和Ruby混合在一起呢非常感谢你的回答和解释!我应该说得更清楚些
type\u of
实际上是我的产品模型中的一个字段。对不起,我将更改我的问题以反映这一点。这是一个更好的方法,但应该是
。那我想你赢了@Pdobb,非常感谢您的回答和解释!我应该说得更清楚些
type\u of
实际上是我的产品模型中的一个字段。对不起,我将更改我的问题以反映这一点。这是一个更好的方法,但应该是
。那我想你赢了@Pdobb,非常感谢您的回答和解释!