在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”
答案 0 :(得分:3)
你似乎在误解这里发生了什么。符号是一个类似于字符串的对象,但在内存中以不同的语法存储。当您将符号传递给Ruby中的许多方法时,它们将被用作方法的引用。在这种情况下,:question_id
符号作为参数传递给number_field
辅助方法,随后在表单对象上调用(即,可能是ActiveRecord模型)。
长话短说,answer
,一个表单构建器,从您传递到form_for
调用的模型中获取问题ID。要显示该值,您可以直接调用该方法,即:
<%= @submission.question_id %>
但是,由于您使用fields_for
对这些进行迭代,因此您可以通过调用object
来访问表单构建器引用的对象:
<%= answer.object.question_id %>