Ruby on Rails Create Method `неинициализированная константа` ошибка для выпадающего значения - PullRequest
0 голосов
/ 06 октября 2019

У меня есть форма, которая правильно отображает и выдает правильные значения в журнале моего сервера, но при создании реального объекта возникает ошибка.

Модель называется LeadMagnet, и вотсхема:

  create_table "lead_magnets", force: :cascade do |t|
    t.string "title"
    t.text "description"
    t.boolean "motivation", default: false
    t.boolean "mindset", default: false
    t.boolean "resourcing", default: false
    t.boolean "planning", default: false
    t.boolean "time_management", default: false
    t.boolean "discipline", default: false
    t.string "type"
    t.string "link_url"
    t.boolean "active", default: true
    t.bigint "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["user_id"], name: "index_lead_magnets_on_user_id"
  end

Ошибка вызывается для моего lead_magnet#create метода в этой строке:

@lead_magnet = LeadMagnet.new(lead_magnet_params)

А вот параметры, на которые он ссылается:

def lead_magnet_params
  params.require(:lead_magnet).permit(
    :title,
    :description,
    :motivation,
    :mindset,
    :resourcing,
    :planning,
    :time_management,
    :discipline,
    :type,
    :link_url,
    :active,
    :user_id
  )
end

Проблема связана со значением «type», которое представляет собой строку, сгенерированную следующим кодом:

  <div class="form-group col-12 mb-0 pb-0">
    <%= f.input :type, label: false, prompt: "Select LM Type", input_html: { class: 'mdb-select md-form colorful-select' }, collection: [['Attachment', 'Attachment'], ['Link', 'Link']], required: true %>
  </div>

, который, в свою очередь, создает это в журнале сервера:

Started POST "/lead_magnets" for ::1 at 2019-10-05 21:11:07 -0700
Processing by LeadMagnetsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"3NYnrPxC6oucYnV25TFOnAmbLjDoRLRisLkbNaisDBV6yCLkg1yXPC6bUo2hzEkrML1VdH+4BY4iLbqgGs0nIg==", "lead_magnet"=>{"title"=>"", "description"=>"", "motivation"=>"0", "mindset"=>"0", "resourcing"=>"0", "planning"=>"0", "time_management"=>"0", "discipline"=>"0", "type"=>"Link", "link_url"=>"", "active"=>"1"}, "commit"=>"Save"}
Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms)



NameError - uninitialized constant Link:
  app/controllers/lead_magnets_controller.rb:27:in `create'

Почему значение «Ссылка» выглядит как неинициализированная константа, когда оно должно быть просто строковым значением?

1 Ответ

0 голосов
/ 06 октября 2019

Оказывается, что "тип" является защищенным именем в Rails. Я изменил имя столбца на lead_magnet_type, и ошибка исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...