Rails:如何使文本字段只能编辑一次?

时间:2017-01-08 18:52:04

标签: html ruby-on-rails

我正在制作一个小表单,我尝试做的是让其中一个文本字段仅在创建通知时获取值。我有:

<%= f.label :User_ID %>
<%= f.text_field :user_id, :value => current_user.id ,:readonly => true %>

我的问题是,当其他用户正在编辑通知时,此文本字段会自动更改其值。我不知道如何让它发挥作用。谢谢!

1 个答案:

答案 0 :(得分:1)

在您的视图中,您可以检查用户ID是否已存在,如果是,则不显示用户ID text_field:

<% unless user_id.exists? %>  #only if user_id is not present, show the text_field
<%= f.text_field :user_id, :value => current_user.id ,:readonly => true %>
<% end %>

另一种选择是将布尔值添加到您引用的模型中。例如,通知模型:

通知:字符串 编辑:布尔值(默认值:true)

用户创建通知后,您可以使用after create将“edit”的布尔值设置为false。

用户下次编辑该通知时,您会在视图中执行与以前相同的操作:

<% unless @notification.edit? %>  #only if edit is set to true, show the text_field
<%= f.text_field :user_id, :value => current_user.id ,:readonly => true %>
<% end %>

这有点模糊,但它让你知道如何做到这一点。