0

在 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”

4

1 回答 1

3

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

长话短说,answer表单构建器从您传递给form_for调用的模型中获取问题 ID。要显示该值,您可以通过直接调用该方法来执行相同的操作,即:

<%= @submission.question_id %>

但是,由于您正在使用 迭代这些fields_for对象,因此您可以通过调用来获取表单构建器正在引用的对象object

<%= answer.object.question_id %>
于 2012-11-25T05:51:45.020 回答