[英]Ruby on Rails 5 : I'm getting a hash instead of an array when submiting a form
[英]When I tried to get input from the Form on ruby on rails, I am getting back hash array instant of simple name. How to solve it?
这是我的 HTML 代码
<h1>Create new Cat</h1>
<form action="/cats" method= "POST">
<input type="text" name="cat[name]">
<input type="submit" value="Create Cat!">
</form>
当我尝试通过在框中输入Loki作为猫名来获取上述代码的输入时,我得到了参数: {"cat"=>{"name"=>"Loki"}} ,保存的名称变为{"name "=>"Loki"}和 Json 格式为{"id":19,"name":"{"name"=\>"Loki"}","created_at":"2021-11-07T07:03: 50.140Z","updated_at":"2021-11-07T07:03:50.140Z"} .
我期待得到的只是“洛基”。
这是我从cats_controller.rb 创建的方法
def create
#POST /cats
@cat = Cat.new(name: params[:cat].permit(:name))
if @cat.save
redirect_to cat_url(@cat)
else
render :new
#render json: @cat.errors.full_messages, status: :unprocessable_entity
end
end
像 Rails 做事的标准一样,使用强参数会更好。 params[:cat].permit(:name)
只允许参数,不读取它,你必须做params[:cat].permit(:name)[:name]
来获取名称本身。
然而,正如所说的,这是 Rails 的方式,更简洁的代码。
def create
@cat = Cat.new(safe_params)
# ...
end
def safe_params
params[:cat].permit(:name)
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.