我正在尝试在我制作的rails上提交ruby中的表单,但是继续得到de next错误。 Ruby on Rails表单:param缺失或值为空
我的表格
<%= form_for @test do |f| %>
<div class="field">
<%= f.text_field :first_name %><br>
<%= f.text_field :last_name %><br>
</div>
<div class="actions">
<%= f.submit "Create" %>
</div>
<% end %>
我的控制器
def new
@test = Test.new
end
def create
@test = Test.new(allow_params)
if @test.save
redirect_to 'test/index'
else
render 'test/new'
end
end
private
def allow_params
params.require(:last_name).permit(:first_name)
end
我的路线
resources :test
get 'test/index'
get 'test/new'
get 'test/create'
post '/tests' => 'test#create'
答案 0 :(得分:0)
您的属性位于test
标签内,因此您应该去:
def allow_params
params.require(:test).permit(:first_name, :last_name)
end
答案 1 :(得分:0)
看,这是您点击提交时形成帖子的内容:
{"utf8"=>"✓","authenticity_token"=>"...", "test"=>"first_name"=>"poldo", "last_name"=>"de poldis"},"commit"=>"Create"}
正如您所看到的,first_name
和last_name
在哈希中作为名为test
的密钥的值。的确,你的函数allow_params
需要这样的东西
last_name: {first_name: 'poldo'}
你可以看到param(last_name
)丢失了,因为它在test
里面!
正如Ben回答的那样:
params.require(:test).permit(:first_name, :last_name)
为了更好地了解参数的强大功能,我建议您查看此页Api doc或更好The latest version ofthe official manual