現在我正在嘗試構建一個應用程序,它有能力搜索電話號碼,購買它們,並將事務記錄到數據庫。ActiveModel :: MassAssignmentSecurity :: PhonesController錯誤#創建
我認爲這樣做的方式是有兩個控制器 - (1)find_numbers控制器獲取參數並搜索數字。 (2)電話控制器購買所選號碼並將參數保存到數據庫。
下面是我想要做的事情的圖表。
http://www.stepanp.com/search-and-buy.jpg
與同stackoverflower的幫助下,我才得以修復一堆錯誤的,但由於某些原因,當我從find_numbers /展後到PhonesController#創建,我得到的錯誤
ActiveModel::MassAssignmentSecurity::Error in PhonesController#create
無法大規模指派保護的屬性:original_number,:名稱,:twilio_number
我想這可能與我的表格中規定的辦法的事,因爲手機型號確實有attr_accessible到了se值。
這裏的find_numbers /節目形式
<%= @numbers.each do |number| %>
<%= form_tag(:controller => "phones", :action => "create") do %>
<%= hidden_field "phone[:original_number]", params[:original_number] %>
<%= hidden_field "phone[:name]", params[:name] %>
<%= hidden_field "phone[:twilio_number]", number.phone_number %>
<div class="found_list">
<div class="found_phone_number">
<%= label_tag("phone[:number]", number.friendly_name) %>
</div>
<div class="choose_found_number">
<%= submit_tag("Choose This Number", :class => "btn btn-large btn-success") %>
</div>
</div>
<hr>
<% end %>
<% end %
它可能有一些做與添加的電話[]周圍的值
這裏的PhoneController#創建操作
def create
@user = current_user
@phone = @user.phones.new(params[:phone])
client = Twilio::REST::Client.new(@user.twilio_account_sid, @user.twilio_auth_token)
number = client.account.incoming_phone_numbers.create(
:phone_number => params[:twilio_number])
if @phone.save && number.present?
flash[:success] = "Phone Number Created!"
redirect_to user_path
else
render new_find_number_path
flash[:error] = "It looks like there were errors with the submission"
end
end
而且這裏是手機型號
# == Schema Information
#
# Table name: phones
#
# id :integer not null, primary key
# name :string(255)
# twilio_number :string(255)
# original_number :string(255)
# user_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class Phone < ActiveRecord::Base
attr_accessible :original_number, :user_id, :name, :twilio_number
belongs_to :user
validates :name, presence: true
validates :twilio_number, presence: true
validates :original_number, presence: true
validates :user_id, presence: true
default_scope order: 'phones.created_at DESC'
end
我認爲表單中的「phone [:attribute]」與此有關 - 儘管如果我們沒有這樣說,出於某種原因,創建操作不會理解:name屬性被張貼爲手機型號。
任何幫助,將不勝感激