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言うと、フォームビルダーは、呼び出しに渡したモデルから質問IDを取得しますform_for。値を表示するには、メソッドを直接呼び出すことで同じことを行うことができます。つまり、次のようになります。

<%= @submission.question_id %>

ただし、を使用してこれらを反復処理しているfields_forため、代わりに、フォームビルダーが参照しているオブジェクトに次のように呼び出すことができますobject

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