2011-05-22 52 views
1

新手问题为什么我的查询字符串参数传递给我的看法

网址:

/categories/new?parent_id=6 

控制器:

def new 
    @category = Category.new(:parent_id => params[ :parent_id ]) 
end 

查看:

<%= form_for(@category) do |f| %> 
<%= f.hidden_field :parent_id %> 
<% end %> 

来源页面:

<input id="category_parent_id" name="category[parent_id]" type="hidden" /> 

为什么这个值没有被传递?

编辑:我之后意识到我没有:parent_id在我的模型类的我attr_accessible一部分。一切都按照现在的样子工作。谢谢你们的帮助。

+0

我们需要多一点的去与这里比尔。然而,请尝试一下,让我们知道。 Category.new(params [:parent_id])并在视图中添加<%= debug(params)%>并查看输出。 – CharlesJHardy 2011-05-22 21:40:36

+0

我想你应该检查nested_attributes。你可能需要那个来让你的代码更加结构化。 http://railscasts.com/episodes/196-nested-model-form-part-1 http://railscasts.com/episodes/197-nested-model-form-part-2 – 2011-05-22 21:53:04

+0

对不起@Ceilingfish,那在这个问题上是一个错字。代码是正确的。 – Bill 2011-05-22 22:01:02

回答

2

@Ceilingfish之后编辑的经验之谈

试试这个:

<%= form_for(@category) do |f| %> 
    <%= f.hidden_field :parent_id, :value => params[:parent_id] %> 
<% end %> 
+0

我得到一个消息的异常:对'未定义的方法 '合并' “6”:String' – Bill 2011-05-22 21:58:12

+2

我认为他的意思是'<%= f.hidden_​​field:parent_id,:value => params [:parent_id]%>'。但是,如果对象具有适当的属性设置,它应该被自动填充。 – Ceilingfish 2011-05-22 21:59:53

+0

谢谢@Ceilingfish;) – apneadiving 2011-05-22 22:02:44

0

您试图从表单中的隐藏字段中读取值,但它正在作为URL中的查询参数发送。

相关问题