我是 Rails 3 的新手,遇到了一些我认为很容易解决的问题。 我一直在关注 Head First:Rails 中的示例,但得出的结论是他们使用的是 rails 2。
我做了一个这样的 html.erb 文件:
<h1>New user</h1>
<% form_for(@user, :url=>{:action=>'create'}) do |f| %>
<p>Fullname: <%= f.text_field :fullname%></p>
<p>Username: <%= f.text_field :username%></p>
<p>Email: <%= f.text_field :email%></p>
<p>Password: <%= f.text_field :password%></p>
<p><%= f.submit "Create" %></p>
<% end %>
我想在我转到 http://localhost:3000/users/new 时显示此表单所以我添加了一条这样的路线:
resources :users
match "users/new" => "users#new"
match "users/create" => "users#create"
当我转到该地址时,它会显示一个带有 H1 header 的网页:新用户,但不会显示任何其他内容。
我忘记了什么?
最佳答案
resources :users
已经包含
match "users/new" => "users#new"
match "users/create" => "users#create"
因此您可以安全地删除它们。表单不显示,因为如果你想显示 ruby 代码的执行结果,你应该使用以下结构 <%= %>
. <% %>
只代表代码执行,不代表显示。
所以你的新 View 应该是这样的
<h1>New user</h1>
<%= form_for(@user, :url=>{:action=>'create'}) do |f| %>
<p>Fullname: <%= f.text_field :fullname%></p>
<p>Username: <%= f.text_field :username%></p>
<p>Email: <%= f.text_field :email%></p>
<p>Password: <%= f.text_field :password%></p>
<p><%= f.submit "Create" %></p>
<% end %>
关于ruby-on-rails - rails : form_for routes won't display a good form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993821/