2013-02-12 73 views
2

我1.How可以使文本字段不可編輯的(可讀= FALSE),而編輯記錄Ruby on Rails的:使文本字段不可編輯和顯示其他領域,而編輯記錄

我的形式查看代碼

<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

爲什麼不能發佈一些代碼以獲取更多resp ONSE? – Vinay 2013-02-12 10:32:24

+0

添加了,但我仍然不知道如何在表單中添加一些條件來檢查此編輯模式是否使此字段不可編輯 – neeraj 2013-02-12 10:34:46

+0

併發布條件以啓用文本框編輯 – Vinay 2013-02-12 10:35:55

回答

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中完成。只要讓我知道它的工作與否。

+0

這不是一個好的實現它的方式。 – neeraj 2013-02-12 10:47:04

+0

你的問題應該清楚。在發佈問題之前,請確保您要發佈的內容。謝謝 – Vinay 2013-02-12 10:48:46

+0

我的問題很清楚,因爲我說我想在編輯記錄時做這些事情。 – neeraj 2013-02-12 10:52:44

0

對於那些找到它的人的回答。我的問題非常接近。我有一個我想要顯示的字段,但沒有可編輯的字段。我正在使用設計,並且只允許通過設計視圖設置電子郵件和密碼。

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 
+0

感謝您的回答 - 如果您停止批量分配電子郵件屬性,您如何通過表單最初設置電子郵件(通過def新操作)? – BKSpurgeon 2017-07-04 06:31:57