这是我的new.html.erb
<%= form_for :simulation, url: simulations_path do |f| %>
<div class="form-group">
<%= f.label :Name %>
<div class="row">
<div class="col-sm-2">
<%= f.text_field :name, class: 'form-control' %>
</div>
</div>
</div>
<div class="form-group">
<%= f.label :'Rendering Option' %>
<div class="Dropdown">
<div class="col-sm-4">
<%= select_tag(:is_random, options_for_select([['Random', true], ['No Opinion', false]], selected: :is_random )) %>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<%= f.submit 'Submit', class: 'btn btn-primary' %>
</div>
模拟 Controller .rb
class SimulationsController < ApplicationController
def index
@simulations = Simulation.all
end
def new
end
def create
@simulation = Simulation.new(simulation_params)
@simulation.save
redirect_to @simulation
end
def show
@simulation = Simulation.find(params[:id])
end
结束
Simulation.rb(模型类)
class Simulation < ActiveRecord::Base
belongs_to :user
end
架构.rb
create_table "simulations", force: :cascade do |t|
t.string "name"
t.boolean "is_random"
end
我无法在数据库中设置 :is_random
值,但休息没问题。我在这里做错了什么?我检查了 sqlite
数据库中的值,is_random
列中有 null
条目。
最佳答案
在进行批量分配时,您需要允许 属性。你可以把它写成:
<%= f.select(:is_random, options_for_select([['Random', true], ['No Opinion', false]], selected: :is_random )) %>
或
<%= select_tag("simulations[:is_random]", options_for_select([['Random', true], ['No Opinion', false]], selected: :is_random )) %>
使用您的语法,该值位于 params
散列中,如 {..., is_random: true,..}
,这就是强参数过滤方法内部的原因你不明白。如果您现在使用建议的解决方案,您将获得 params
散列中的值,如 {..., simulations: { is_random: true,..}, ...}
.
您可以在发出请求时从 development.log 文件中检查所有这些内容。
关于ruby - 如何从 Rails 中的 View 表单中获取模型中的参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31085376/