2016-04-24 55 views
-1

我現在正在發生最奇怪的錯誤。我有一個超級基本的形式,它需要first_name,Last_name,Email和Phone_number。這不可能是更直接的,但由於我的理由,Phone_number字段不起作用?這裏是我的代碼Form_for - Rails錯誤 - 電話號碼未保存到數據庫?

<%= form_for @subscriber do |form| %> 
<div class="form-group"> 
<%= form.label :first_name %> 
<%= form.text_field :first_name %> 
<%= form.label :last_name %> 
<%= form.text_field :last_name %> 
<%= form.label :email %> 
<%= form.text_field :email %> 
<%= form.label :phone_number %> 
<%= form.text_field :phone_number %> 
</div> 
<%= form.submit "Sign Up", class: "btn btn-primary" %> 

這裏是我的模型

class Subscriber < ActiveRecord::Base 
validates :first_name, presence: true 
validates :last_name, presence: true 
validates :email, presence: true 
validates :phone_number, presence: true 
end 

和模式

create_table "subscribers", force: :cascade do |t| 
t.string "first_name" 
t.string "last_name" 
t.string "email" 
t.string "phone_number" 

這是結果後,我在視圖中的數據類型。我顯然在按下注冊之前放了一個字符串。

enter image description here

我缺少什麼?任何幫助將是偉大的!如果我取消驗證並在其中輸入字符串,則在控制檯中返回「nil」?

+0

你可以發佈你的控制器代碼嗎? –

+0

我只是想通了。這是我在私人活動中包含的參數。如果你願意,你可以在答案中發佈這個建議,我會給你點 – Bitwise

+0

謝謝你會:) –

回答

2

默認情況下,params散列中的所有值在Rails4中不可用。您需要告訴,如果您想提交表單(強參數),那麼哪些參數可以批量分配給:訂閱者。在Rails4中,params必須在使用它們之前列出(以散列表示),哪些是允許的。每個控制器管理自己的允許屬性列表。因此,在控制器中你應該使用:

params.require(:subscribers).permit(:first_name, :last_name, :email, :phone_number) 
0

你的代碼看起來不錯,我猜這個問題會出現在你的控制器中。例如,您可能忘記了允許:phone_number。請確保你做

params.require(:subscribers).permit(:first_name, :last_name, :email, :phone_number) 
+0

爲什麼我們'確保這個方法是公開的? –

+0

@HieuPham謝謝你指出,我的錯誤。編輯 –