我正试图创建一个编辑用户表单来修改存储在数据库中的用户详细信息,但不断出现错误。我已经更改了表单URL,并尝试将其更改为method: :get
,但没有成功。
编辑用户表单
<%= form_with url: @user, :class => "user_sign_in_form" do |form| %>
<%= form.text_field "user[email]", placeholder: "email", :class => "form_box" %>
<%= form.text_field "user[username]", placeholder: "username", :class => "form_box"%>
<%= form.text_field "user[password]", placeholder: "password", :class => "form_box" %>
<%= form.submit "SUBMIT" %>
<% end %>
编辑操作
def edit
@user = User.find(params[:id])
end
编辑用户表单的链接
<%= link_to "Edit", edit_user_path(@user) %>
错误消息
No route matches [POST] "/users/58"
您需要使用model: @user
而不是url: @user
。
<%= form_with model: @user, :class => "user_sign_in_form" do |form| %>
<%= form.text_field :email, placeholder: "email", :class => "form_box" %>
<%= form.text_field :username, placeholder: "username", :class => "form_box"%>
<%= form.password_field :password, placeholder: "password", :class => "form_box" %>
<%= form.submit "SUBMIT" %>
<% end %>
传递模型时,form_with
将根据记录是否已保存来设置操作(/users
或/users/:id
(和方法(POST
或PATCH
(。请参见资源路由:Rails默认值。
url:
选项实际上只应在必须重写传统路由或表单不包装模型实例时使用。
也使用CCD_ 10代替;绑定";模型属性的输入。没有人喜欢从头开始填写整个表格,因为他们错过了一些小细节。
另一方面,不要使用占位符而不是标签——从可使用性和可访问性的角度来看,这是一种令人敬畏的做法。