我对ruby非常陌生 - 尝试使用rails并且我已经试图做一个简单的注册表单了:
<%= form_for :user, url: user_path do |f| %>
<p>
<%= f.label :email %><br>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :password %><br>
<%= f.password_field :password %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
这是一个错误:
No route matches {:action=>"show", :controller=>"user"} missing required keys: [:id]
任何人都可以解释这实际意味着什么吗?
编辑:
我正在关注本教程,只将帖子更改为用户:http://guides.rubyonrails.org/getting_started.html
答案 0 :(得分:1)
form_for应始终获取一个对象..就像来自控制器的用户
# controller
def new
@user = User.new
end
# form
<%= form_for @user,...
或者您可以使用form_tag方法,该方法不依赖于对象..
答案 1 :(得分:1)
查看您的代码,您正在使用user_path
为单个用户创建链接,理想情况下该代码应为user_path(@user)
,这就是您收到错误请求ID的原因。
在你的情况下,你指定了正确的模型,路径,但你没有实例化一个对象,这就是为什么你得到一个id错误引用show动作,因为user_path
需要一个id为您追求的特定用户。
希望这能澄清一些事情。
答案 2 :(得分:1)
我遇到了类似的问题。
控制器名称应为复数(即用户)且
new.html.rb中的第一行应如下所示:
<%= form_for :user, url: users_path do |f| %>
答案 3 :(得分:-2)
我想你的问题已经解决了,但是我想我也会指出,如果你想遵循Rails惯例,你的控制器应该是复数(UsersController):)它让你更容易玩教程你按照你的喜好改变结果!