Rails f.select尝试禁止更改下拉列表

Cat*_*ish 1 ruby ruby-on-rails ruby-on-rails-3

我正在尝试禁止在表单上更新下拉列表.

目前我的形式是这条线:

<%= f.select :permission, options_for_select([['Admin', 'admin'], ['Read Only', 'readonly'], ['Editable', 'editable']], {:disabled => @permissions_disabled}) %>
Run Code Online (Sandbox Code Playgroud)

我的编辑控制器方法包含:

@permissions_disabled = params[:id].to_i == current_user.id.to_i
p @permissions_disabled
Run Code Online (Sandbox Code Playgroud)

我可以在我的日志中清楚地看到1 @ permissions_disabled1为真,但是当我编辑表单时,我仍然可以在下拉列表中选择新值.

我在这做错了什么?

jvn*_*ill 6

select接受5个参数,第4个参数是帮助器的一组选项.第五个是像class和id的html选项.我认为你需要把它传递给那个

<%= f.select :permission, options_for_select([['Admin', 'admin'], ['Read Only', 'readonly'], ['Editable', 'editable']], {}, {:disabled => @permissions_disabled}) %>
Run Code Online (Sandbox Code Playgroud)

更新:没有options_for_select在您的代码中看到.你不需要它,如果你正在使用select,你只想在你使用时使用它select_tag

<%= f.select :permission, [['admin', 'Admin'], ['readonly', 'Read Only'], ['editable', 'Editable']], {}, {:disabled => @permissions_disabled} %>
Run Code Online (Sandbox Code Playgroud)