1.如何在编辑记录
时使文本字段不可编辑(可读= false)我的表单查看代码
<div class="field">
<%= f.label t :profile_name %><br />
<%= f.text_field :profile_name %>
</div>
2.如何在编辑记录时使字段可见。我在数据库表中有一个字段,我只想在编辑记录时显示以填充,同时创建一个不可见字段的新记录。
解决:
永远不要介意我得到了解决方案,
1.
<div class="field">
<%= f.label t :profile_name %><br />
<%= f.text_field :profile_name, :readonly => f.object.persisted? %>
</div>
2.
<% if f.object.persisted?%>
<div class="field">
<%= f.label t :another_field %><br />
<%= f.text_field :another_field%>
</div>
<% end %>
答案 0 :(得分:6)
如果您希望文本框不可编辑,可以使用小css或前端,如下所示:
<div class="field">
<%= f.label t :profile_name %><br />
<%= f.text_field :profile_name, disabled: disabled %>
</div>
或添加:readonly => true
而不是disabled
。所以,
<div class="field">
<%= f.label t :profile_name %><br />
<%= f.text_field :profile_name, readonly: true %>
</div>
在视图中添加已禁用,以生成不可编辑的文本框。如果它不起作用我们也可以用css。请告诉我它是否有效。
答案 1 :(得分:1)
回答那些发现这一点的人。我的问题非常接近。我有一个我想要显示的字段,但没有可编辑的字段。我正在使用设计,只允许通过设计视图设置电子邮件和密码。
1)禁止在表单中进行编辑(此步骤提供零安全性):
<%= f.text_field :email, readonly: true %>
2)客户防止恶作剧(此步骤是实际保护):
# Never trust parameters from the scary internet, only allow the white list through.
def user_params
# params.require(:user).permit(:email, :phone_number, :password, :password_confirmation)
# email and password must be edited via devise controller
params.require(:user).permit(:phone_number)
end
2b)或者,您可以从编辑集中删除值:
def update
params['user'].delete('email')
...
end