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 表确实有 course_id 列,它是 Courses 表的外键,我已经在控制台中检查了关联,它确实返回了正确的 course_id。关联设置正确,因为我有因此,我相信我的 collection_select 的语法有问题,但我不确定它是什么。

我很感激任何帮助。

谢谢。

4

1 回答 1

2

由于某种原因,我在数据库中将 course_id 设置为 varchar 而不是 int 。将其更改为 int 也可以解决问题。

于 2010-08-24T15:50:13.807 回答