Rails访问符号的当前值

时间:2012-11-25 05:41:17

标签: ruby-on-rails ruby

在edit.html.erb文件中,我有代码

<%= 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”

1 个答案:

答案 0 :(得分:3)

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

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

<%= @submission.question_id %>

但是,由于您使用fields_for对这些进行迭代,因此您可以通过调用object来访问表单构建器引用的对象:

<%= answer.object.question_id %>