這是我的 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"=\u003e"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
uj5u.com熱心網友回復:
像 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351629.html
