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

时间:2015-03-08 17:50:27

标签: ruby-on-rails ruby devise

我正在构建一个包含共享简历的应用程序。我正在使用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。如果您需要我提供更多详细信息,请准确说明。

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

2 个答案:

答案 0 :(得分:1)

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

  resources :resumes, except: [:index]

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

答案 1 :(得分:0)

提交表单后,应用程序会将您重定向到resumes_path(默认情况下,索引 -action用于恢复)。问题是,使用except:这是你唯一不允许在你的路线文件中的东西:

resources :resume, except: [:index]

此外,如前所述,:resume应以复数编写。