我正在构建的 Rails 站点中有以下 form_for 声明:
form_for(form_question, :url => { :controller => "form_questions", :action => "edit", :id => form_question.id }) do |f|
但网站呈现;
<form action="/form_questions/1/edit">
为什么将“/ 1 /”放在操作网址中的“编辑”之前?
我正在构建的 Rails 站点中有以下 form_for 声明:
form_for(form_question, :url => { :controller => "form_questions", :action => "edit", :id => form_question.id }) do |f|
但网站呈现;
<form action="/form_questions/1/edit">
为什么将“/ 1 /”放在操作网址中的“编辑”之前?
简单的答案。RESTful 路由。
基本上,您已经resources :form_questions
在 config/routes.rb 中定义了,这会自动转换您的 URL 以使其成为 RESTful。
我建议使用提供给您的 RESTful 助手,例如:
<% form_for(@form_question) do %>
<%= f.text_field :question %>
...
<% end %>
这将生成一个 URLcreate
或update
取决于@form_question
响应new_record?
是true
或false
分别。它还会做其他事情,比如根据new_record?
返回的内容为表单标签提供不同的 id 属性。