2012-10-04 49 views
0

現在我正在嘗試構建一個應用程序,它有能力搜索電話號碼,購買它們,並將事務記錄到數據庫。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屬性被張貼爲手機型號。

任何幫助,將不勝感激

回答

0

我無法弄清楚這是爲什麼發生的事情,但我通過渲染電話/新的替代,以及使用的form_for(@phone),而不是迴避的form_tag它一起

相關問題