繁体   English   中英

当我尝试从 ruby​​ on rails 上的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM