0

我似乎无法将所选国家/地区保存到数据库。我在模型数据库中包含了一个字符串列 country_code。

我在这里渲染部分内容:

<%= f.label :country_code, "Country Traveled:" %>
<%= f.country_select :country_code, prompt: "Select a country" %>

在我的控制器中:

    def new
        @user = User.new
    end

def index
    @user = User.all
  end

def create
    @user = User.new(user_params)

    if @user.save
      redirect_to @user
    else
      render 'new'
    end
  end

  def show
    @user = User.find(params[:id])
  end

  def edit
    @user = User.find(params[:id])
  end

private
    def user_params
      params.require(:user).permit(:country_code, :summary, :title, :text, :start_date, :end_date)
    end

在我的model.rb中:

class User < ActiveRecord::Base

    has_many :comments, dependent: :destroy

    attr_accessor :country_code

    validates :country_code, presence: true

    validates :summary, presence: true,length: { minimum: 5, maximum: 100 }

    validates :title, presence: true,
                      length: { minimum: 3 }

    validates :text, presence: true,
                      length: { minimum: 5 } 

    validates :start_date, presence: true

    validate :end_date_is_after_start_date

private
  def end_date_is_after_start_date
    return if end_date.blank? || start_date.blank?

      if end_date < start_date
        errors.add(:end_date, "End Date cannot be before the Start Date") 
      end 
  end

end

视图中的下拉菜单工作正常,但是当我点击提交时,它不会保存到数据库中。我错过了什么吗?提前致谢!

4

1 回答 1

0

请分享您的整个控制器和模型。

通常,您可以删除:

attr_accessor :country_code

这是没用的,因为您将 country_code 保存在数据库中,而 attr_accessor 仅用于虚拟属性,您可以在此处阅读更多信息:https ://stackoverflow.com/a/20535041/3739191

PS:您的注册表格是从头开始构建的吗?

于 2014-09-24T13:52:35.360 回答