Rails4:表单中未定义方法,一对一关联项目

Rails 4: Undefined method in form, one-to-one association project

我正在构建一个包含分享简历的应用程序。我正在使用 Devise gem。每个用户都可以创建 only one 份简历。我制作了模型及其关系。 Resume belongs_to UserUser has_one Resume.

制作视图后,我想测试我的应用程序,但我收到来自 _form.html.erb 的错误:undefined method resumes_path' for #<#<Class:0x00...>

这是我的form.rb:

<%= simple_form_for @resume, html: { multipart: true } do |f| %>
  <% if @resume.errors.any? %>
    <div id="errors">
      <h2>
        <%= pluralize(@resume.errors.count, "error") %>
        prevented this resume from saving
      </h2>
      <ul>
        <% @resume.errors.full_messages.each do |msg| %>
          <li>
            <%= msg %>
          </li>
        <% end %>
      </ul>
    </div>
  <% end %>
  <div class="form-group">
    <%= f.input :title, input_html: { class: 'form-control' } %>
  </div>
  <div class="form-group">
    <%= f.input :description, input_html: { class: 'form-control' } %>
  </div>
  <%= f.button :submit, class: "btn btn-primary" %>
<% end %>

为了提供更多关于我的代码的细节,我做了这个Gist。如果您需要我提供更多细节,请精确。

在这个应用程序中,我只希望用户能够创建一份简历,然后他就可以分享它。所以表单的预期行为是创建一个包含两个元素的简历:titledescription,这是我第一次做一对一建模,我不知道应该怎么做组织起来。

在您的 routes.rb 中尝试在资源中使用复数名称:

  resources :resumes, except: [:index]

http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default

提交表单后,应用程序会将您重定向到 resumes_path(默认情况下是 index-action for resumes)。问题是,这是唯一不允许在路由文件中使用 except: 的内容,如下所示:

resources :resume, except: [:index]

另外,如前所述,:resume应该写成复数