0

Railsアプリケーションのプロファイルの編集ビューで使用しているcollection_selectに奇妙な問題があります。データベースは正しい値で更新されていますが、ユーザーがプロファイルを編集しようとしたときに、選択ボックスのデフォルト値が選択されていません。:include_blank => trueまたは:prompt=>trueのどちらも機能しません。

これがコードです

ビューの編集:

<%= render :partial => 'player_form' %>

_player_form部分的:

<% form_for @user do |f| %>
    <p>
        <%= f.label :course_id %><br / >
        <%= f.collection_select(:course_id, Course.all, :id, :name, {:prompt => "No Home    Course"})  %>
    </p>
<% end %>

生成されたHTML:

<p> 
    <label for="user_course_id">Course</label><br / > 
<select id="user_course_id" name="user[course_id]">
        <option value="1">Bedford Springs</option> 
        <option value="2">Down River</option> 
        <option value="3">King Valley </option> 
        <option value="4">Test</option></select> 
</p> 

承認にcancanを使用しているため、cancanは自動的に初期化されるため、コントローラーに空の編集アクションがあります

@user = User.find(params[:id])

その行を追加して編集しようとしましたが、何の影響もありません。また、この問題の非常に奇妙な点は、編集フォームの部分的な他のすべてのフィールドに、データベースからの正しい現在の値が入力されていることです。さらに、UsersテーブルにはCoursesテーブルの外部キーであるcourse_id列があり、コンソールで関連付けを確認したところ、正しいcourse_idが返されます。私が持っているので、関連付けは適切に設定されています。したがって、collection_selectの構文に問題があると思いますが、それが何であるかはわかりません。

助けていただければ幸いです。

ありがとう。

4

1 に答える 1

2

何らかの理由で、データベースのintではなくvarcharとしてcourse_idを設定しました。これもintに変更すると、問題が修正されました。

于 2010-08-24T15:50:13.807 に答える