Здравствуйте, я новичок в Rails.

Вот мой код контроллера / projects_controller.rb

def create
@project = current_user.projects.new(project_params)
#@project.website = params[:website]
respond_to do |format|
  if @project.save
    Member.create!(
                   user_id: current_user.id,
                   project_id: @project.id,
                   project_manager: true,
                   status: "ready")

    format.html { redirect_to @project, notice: 'Project was successfully created.' }
    format.json { render :show, status: :created, location: @project }
  else
    format.html { render :new }
    format.json { render json: @project.errors, status: :unprocessable_entity }
  end
end
end

def update
#@project.website = params[:website]
respond_to do |format|
  # if (@project.active_was == true) &&
  #   disabled = true
  # end

  if @project.update(project_params)
    # if disabled && (@project.active == false)
    #   flash[:modal] = true
    # end
    @project.website = params[:website]
    format.html { redirect_to @project, notice: 'Project was successfully updated.' }
    format.json { render :show, status: :ok, location: @project }
  else
    format.html { render :edit }
    format.json { render json: @project.errors, status: :unprocessable_entity }
  end
end
end

  def project_params
  params.require(:project).permit(
                                  :university_id,
                                  :project_name,
                                  :location,
                                  :tagline,
                                  :photos,
                                  :industry,
                                  :category,
                                  :description,
                                  :category_id,
                                  :expertise_string,
                                  :website,
                                  :active,
                                  :slug,
                                  :project_groups_attributes => [:id, :active, :university_id, :user_group_id]
  )
    end

Вот код моей модели / project.rb

class Project < ActiveRecord::Base
  # has_and_belongs_to_many :users
    has_many :members, :dependent => :destroy
    has_many :users, :through => :members
    has_one :survey
    has_many :project_groups, foreign_key: "project_id", dependent: :destroy
    has_many :groups, :through => :project_groups, :source => :university
    accepts_nested_attributes_for :project_groups, :allow_destroy => true
    has_many :project_expertises, foreign_key: "project_id",
                            dependent: :destroy
    has_many :expertises, :through => :project_expertises, :source => :expertise
    belongs_to :category
    belongs_to :website

Вот мой код db / migrate / [timestamp] _create_projects.rb

class CreateProjects < ActiveRecord::Migration
  def change
    create_table :projects do |t|
      t.integer :university_id
      t.string :project_name
      t.string :tagline
      t.string :photos
      t.string :industry
      t.integer :category
      t.text :description
      t.text :website

      t.timestamps
    end
  end
end

Почему я не могу добавить к этому поле «сайт»? Есть ли что-то еще, что мне нужно сделать?

coderMint

Ответов: 2

Ответы (2)

Согласно вашему комментарию, нет доступной модели Веб-сайт, поэтому нет никакого смысла помещать ассоциацию:

Просто удалите эту строку из своего проекта модели

belongs_to :website

В модели Project вы указали отношение own_to: website. В схеме миграции вместо:

t.text :website

должно быть примерно так:

t.references :website, index: true, foreign_key: true

Когда вы генерируете модель вместо рельсы г ... веб-сайт: текст использовать рельсы г ... веб-сайт: ссылки.

ActiveRecord не может найти внешний ключ для связи проекта с веб-сайтом.

2022 WebDevInsider