2

我遇到了路由错误,我找不到问题出在哪里,我正在创建一个简单的 CRUD 并使用 create 方法遇到了这个问题。

错误

没有路线匹配 [POST] "/usuarios/new"

控制器

def new
  @usuario = Usuarios.new
end 

def create
  @usuario = Usuarios.new(params[:usuario])

  if @usuario.save
    redirect_to usuario_path, :notice => "Cadastrado realizado com sucesso!"
  else
    render "new"
  end
end

新的.html.erb

<h1>Add new user</h1>

<%= form_for (:usuario) do |f| %>

<p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
</p>
<p>
    <%= f.label :idade %><br />
    <%= f.text_field :idade %>
</p>
<p>
    <%= f.label :email %><br />
    <%= f.text_field :email %>
</p>

<p>
    <%= f.submit "send" %>
</p>

<% end %>
4

3 回答 3

2

正如 Flexoid 所指出的,您可能尚未new在控制器中添加该方法。

所以,把这个

def new
  @usuario = Usuario.new
end

编辑

你必须多加注意。

看一看:

def new
  @usuario = Usuario.new # not Usuarios.new, that's wrong.
end  

def create
    @usuario = Usuario.new(params[:usuario]) # not usuarios, first letter should be capital

    if @usuario.save
        redirect_to usuarios_path, :notice => "Cadastrado realizado com sucesso!" # usuario_path requires an id parameter like `usuario_path(@usuario)` or you could redirect to the `index` with `usuarios_path` 
    else
        render "new"
    end
end
于 2012-06-02T16:01:26.153 回答
1

改变

<%= form_for (:usuario) do |f| %>

<%= form_for (@usuario) do |f| %>
于 2012-06-02T15:54:56.860 回答
0

好像您忘记了配置 Rails 路由器。

尝试将此添加到您的config/routes.rb文件中:

resources :usuarios

作为参考,您可以阅读 rails guide Rails Routing from the Outside In

于 2012-06-02T15:46:08.797 回答