2015-11-15 56 views
3

我创建了一个表名tenants它具有以下没有条目已经被保存到红宝石轨道上的数据库?

class CreateTenants < ActiveRecord::Migration 
    def change 
    create_table :tenants do |t| 
     t.text :company_name 
     t.text :work_area 
     t.text :second_pref 
     t.text :third_pref 
     t.integer :who_are_you 
     t.integer :number_of_bedroom 
     t.text :other_specs 
     t.string :budget 
     t.string :name 
     t.string :email 
     t.string :contact_number 

     t.timestamps null: false 
    end 
    end 
end 

,我通过以下形式

 <%= form_for Tenant.new do |val| %> 

       <%= val.label :company_name, "Company Name" %> 
       <%= val.text_field :company_name, class: 'form-control' %> 

       <%= val.label :work_area, "Work Area" %> 
       <%= val.text_field :work_area, class: 'form-control' %> 

       <%= val.label :second_pref, "Second Preference" %> 
       <%= val.text_field :second_pref, class: 'form-control' %> 

       <%= val.label :third_pref, "Third Preference" %> 
       <%= val.text_field :third_pref, class: 'form-control' %> 

       <%= val.label :who_are_you, "Are you Family/Bachelor?" %> 
       <%= val.text_field :who_are_you, class: 'form-control' %> 

       <%= val.label :number_of_bedroom, "Number of Bedroom" %> 
       <%= val.text_field :number_of_bedroom, class: 'form-control' %> 

       <%= val.label :other_specs, "Other Requirments" %> 
       <%= val.text_field :other_specs, class: 'form-control' %> 

       <%= val.label :budget, "Your Budget" %> 
       <%= val.text_field :budget, class: 'form-control' %> 

       <%= val.label :name, "Name" %> 
       <%= val.text_field :name, class: 'form-control' %> 

       <%= val.label :email, "Email" %> 
       <%= val.text_field :email, class: 'form-control' %> 

       <%= val.label :contact_number, "Contact Number" %> 
       <%= val.text_field :contact_number, class: 'form-control' %> 

       <%= val.submit "Submit", class: "btn btn-primary" %> 

    <% end %> 

将数据输入表当我填写所有需要填写,然后点击提交,我在rails服务器日志中看到以下输出。

Started POST "/tenants" for ::1 at 2015-11-15 11:41:27 +0530 
Processing by TenantsController#create as HTML 
    Parameters: { 
"utf8"=>"✓", "authenticity_token"=>"26KYMFmofF+A1UrF+eWu21nEGbVO3n2bUSPl8340k8hY1JQhYF2kfhOHLmlF+r1Tj5UB7h6H+IJ7MY+Rx+o4CA==", 
"tenant"=> 
    { 
    "company_name"=>"Housing.com", 
    "work_area"=>"Hiranandani Business Park", 
    "second_pref"=>"Chandivali", 
    "third_pref"=>"Vikhroli", 
    "who_are_you"=>"Bachelor", 
    "number_of_bedroom"=>"3", 
    "other_specs"=>"Gym, Swimming Pool", 
    "budget"=>"55000", 
    "name"=>"Shravan Kumar Gond", 
    "email"=>"[email protected]", 
    "contact_number"=>"9475593772" 
    }, 
"commit"=>"Submit" 
} 
Unpermitted parameter: budget 
    (0.1ms) begin transaction 
    (0.1ms) rollback transaction 

谁能告诉我,为什么会发生这种情况?

+1

你能否提供你的控制器代码,特别是强参数? – Zoran

回答

3

看起来您在tenants_controller.rb文件的强参数中缺少:budget。它应该是这样的。

private 

    def tenant_params 
     params.require(:tenant).permit(:company_name, 
            :work_area, 
            :second_pref, 
            :third_pref, 
            :who_are_you, 
            :number_of_bedroom, 
            :other_specs, 
            :budget, 
            :name, 
            :email, 
            :contact_number) 
    end 
2

不允许的参数:预算

这是你的错误 - 这意味着你传递参数给你controller,但它不能将它们保存在您的model

解决方法是设置强参数方法(建议使用shravan40)。


既然你在你的#new行动呼吁Tenant.new,我会建议使用在你的控制器如下:

#app/controllers/tenants_controller.rb 
class TenantsController < ApplicationController 
    def new 
     @tenant = Tenant.new 
    end 
    def create 
     @tenant = Tenant.new tenant_params 
     @tenant.save 
    end 

    private 

    def tenant_params 
     params.require(:tenant).permit(:company_name, :work_area, :second_pref, :third_pref, :who_are_you, :number_of_bedroom, :other_specs, :budget, :name, :email, :contact_number) 
    end 
end 

还有什么可以做,以擦亮你的形式...

<%= form_for @tenant do |val| %> 
    <% vals = [[:company_name],[:work_area],[:second_pref, "Second Preference"], [:third_pref, "Third Preference"],[:who_are_you, "Are you Family/Bachelor?"], [:number_of_bedroom], [:other_specs, "Other Requirements"],[:budget, "Your Budget"], [:name], [:email], [:contact_number]] %> 

    <% vals.each do |value| %> 
     <% value[1] ||= value[0].to_s.gsub("_", " ") %> 
     <%= val.label value[0], value[1] %> 
     <%= val.text_field value[0], class: 'form-control' %> 
    <% end %> 

    <%= val.submit "Submit", class: "btn btn-primary" %> 
<% end %> 
+0

令人惊叹的答案的最后部分。 – Shravan40

+0

感谢萌芽!如果它起作用,否则它只是非常松散>。< –