[英]Creation working on console but not on website - ruby on rails
我有一個表格可以在我的應用程序中注冊客戶,該表格在添加密碼內容(bcrypt-ruby)之前運行良好。 現在,提交表單時不會創建客戶,但是如果我使用完全相同的值通過控制台創建,則可以正常工作。 我沒有收到任何錯誤消息,只是事務回滾(唯一奇怪的事情是一個不允許的參數:password,password_confirmation但如果重要的話是idk)。 我使用的是protected_attributes gem,而不是現在的標准strong_params。 為什么要在控制台上工作而不通過POST進行工作? 一定是帶有bcrypt的東西,否則我真的錯過了一些愚蠢的東西,但是我在研究中找不到任何答案。 請幫助:s
模型:
attr_accessible :name, :surname, :email, :phone, :address, :password, password_confirmation
has_secure_password
控制器創建動作:
def create
@customer = Customer.new(customer_params)
respond_to do |format|
if @customer.save
format.html { redirect_to @customer, notice: 'Customer was successfully created.' }
format.json { render action: 'show', status: :created, location: @customer }
else
format.html { render action: 'new' }
format.json { render json: @customer.errors, status: :unprocessable_entity }
end
end
結束
形成:
<%= form_for :customer, :url => '/customers#new', remote: true do |f| %>
<%= render '/shared/error_messages', object: f.object %>
<p>
<%= f.label(:name, "Nome") %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label(:surname, "Sobrenome") %>
<%= f.text_field :surname %>
</p>
<p>
<%= f.label(:email, "Email") %>
<%= f.text_field :email %>
</p>
<p>
<%= f.label(:phone, "Telefone") %>
<%= f.text_field :phone %>
</p>
<p>
<%= f.label(:address, "Endereço") %>
<%= f.text_field :address %>
</p>
<p>
<%= f.label(:password, "Senha") %>
<%= f.password_field :password %>
</p>
<p>
<%= f.label(:password_confirmation, "Confirme sua senha") %>
<%= f.password_field :password_confirmation %>
</p>
<%= f.submit "Enviar", class: "btn btn-large btn-primary" %>
<% end %>
服務器輸出:
Started POST "/customers" for 127.0.0.1 at 2013-10-17 19:53:15 -0300
Processing by CustomersController#create as JS
Parameters: {"utf8"=>"√", "customer"=>{"name"=>"Derpina", "surname"=>"Derpson", "email"=>"derpina@email.com", "phone"=>"2314534", "address"=>"Derpstreet, 123", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Enviar"}
Unpermitted parameters: password, password_confirmation
←[1m←[35m (0.0ms)←[0m begin transaction
←[1m←[36mCustomer Exists (0.0ms)←[0m ←[1mSELECT 1 AS one FROM "customers" WHERE LOWER("customers"."email") = LOWER('derpina@email.com') LIMIT 1←[0m
←[1m←[35m (0.0ms)←[0m rollback transaction
Rendered customers/_form.html.erb (6.0ms)
Rendered customers/new.html.erb within layouts/application (9.0ms)
Rendered shared/_error_messages.html.erb (0.0ms)
Rendered layouts/_newCustomer.html.erb (3.0ms)
Rendered layouts/_newRestaurant.html.erb (1.0ms)
Rendered layouts/_header.html.erb (6.0ms)
Rendered layouts/_footer.html.erb (0.0ms)
Completed 200 OK in 314ms (Views: 65.0ms | ActiveRecord: 1.0ms)
您需要以私有方法向控制器添加必需和允許的參數。
例如,在customers_controller.rb的底部:
private
def customer_params
params.require(:customer).permit(:name, :surname, :email, :phone, :address, :password, password_confirmation)
end
如果您不想將來再輸入那么長的內容,也可以使用“ bang”版本來允許模型上的所有屬性。
private
def customer_params
params.require(:customer).permit!
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.