2012-11-25 33 views
0

的电流值在edit.html.erb文件我的代码Rails的访问象征

<%= form_for @submission do |f| %> 
    <%= f.fields_for :submitted_answers do |answer| %> 
    <%= answer.label :question_id %> 
    <%= answer.number_field :question_id %> 
    <% end %> 
<% end %> 

这说明我有question_id的电流值,可以让我改变了许多领域。现在我只想显示这个值,不让任何人改变它。我如何得到这个价值?

如果我说

<% @question = :question_id %> 

问题只是等于字符串:“question_id”

回答

3

你似乎误以为这里发生了什么上。符号是一个类似于字符串的对象,但是在内存中以不同的语法存储。当您将一个符号传递给Ruby中的许多方法时,它们将用作方法的引用。在这种情况下,:question_id符号作为参数传递给number_field辅助方法,随后在窗体对象(即可能是ActiveRecord模型的对象)上调用该符号。

长话短说,answer,一个表单构建器,从您传递到您的form_for调用的模型中获取问题ID。要显示值,您可以通过直接调用方法,即做同样的事情:

<%= @submission.question_id %> 

但是,因为你遍历这些使用fields_for,可以改为到表单生成器被引用对象通过调用object

<%= answer.object.question_id %> 
+0

是我的错,我真的不添加完整的上下文,基本上回答是叫submitted_answer嵌套属性的一部分。我通过提交,但每个提交都有多个submitted_answers。 – Swiss

+0

@Swiss对......我说过了。 – coreyward

+0

每个submitted_answer有不同的question_id,question_id不是提交的属性。当我尝试完成第二部分时,我还为#获取了未定义的方法'form_object'。 – Swiss