【发布时间】:2016-06-27 18:42:33
【问题描述】:
我可能使用不正确,我无法弄清楚。
我在 simple_form 上使用 options_for_select。它呈现正常,没有错误,但所选选项不会保存到数据库中。所有其他字段保存没有问题。
select_tag 是
<%= select_tag :experiment_type, options_for_select(['AOV', 'Conversion']), :prompt => "Select a Project Type" %>
控制器:
class ExperimentsController < ApplicationController
before_action :find_advertiser
before_action :find_experiment, only: [:edit, :update, :show, :destroy]
def index
@experiments = Experiment.all.order("created_at DESC")
end
def show
end
def new
@experiment = Experiment.new
@advertisers = Advertiser.all.map{ |c| [c.name, c.id] }
end
def create
@experiment = Experiment.new(experiment_params)
@experiment.advertiser_id = params[:advertiser_id]
if @experiment.save
redirect_to advertiser_path(@advertiser)
else
render 'new'
end
end
def edit
@projects = Project.all.map{ |c| [c.name, c.id] }
end
def update
@experiment.advertiser_id = params[:id]
if @experiment.update(experiment_params)
redirect_to experiment_path(@experiment)
else
render 'edit'
end
end
def destroy
@experiment.destroy
redirect_to root_path
end
private
def experiment_params
params.require(:experiment).permit(:advertiser_id, :name, :experiment_type, :hypothesis, :priority, :status, :launch_date,
:description, :baseline_url, :test_url, :baseline_aov_60, :baseline_aov_30, :baseline_aov_mtd,
:baseline_conversion_60, :baseline_conversion_30, :baseline_conversion_mtd)
end
def find_advertiser
@advertiser = Advertiser.find(params[:advertiser_id])
end
def find_experiment
@experiment = Experiment.find(params[:id])
end
end
【问题讨论】:
-
发布您的控制器代码
-
好的,现在创建这个问题了吗?更新?两个都?也展示你的模型结构。控制台或日志中是否有任何错误?
-
你能发布你得到的错误吗?您在迁移中为
experiment_type正确设置了数据类型吗? -
保存操作的服务器日志会很有用。
-
@WesFoster - 我认为问题出在创建操作期间。表单部分应该收集信息并将其发送到我的数据库。插入所有值,但experiment_type 为nil。 @Lahiru - 我的
experiment_type数据类型设置为字符串。我认为这是正确的。查看 MySQL 数据库,它的 varchar (255) @gen - 我将粘贴到我的 Rails 控制台中。 Started POST 具有正确的experiment_type值,但 INSERT 根本不包含experiment_type。
标签: ruby-on-rails simple-form-for