has_one关联和嵌套表单

时间:2012-10-16 20:06:50

标签: ruby-on-rails associations has-one

我有一个模型Post

class Post < ActiveRecord::Base
  has_one :draft, class_name: Post, foreign_key: draft_id
end

routes.rb我有以下内容:

namespace :admin do
  resources :posts do
    resource :draft
  end
end

我想要实现的是在使用form_for时启用草稿,即:

= form_for [:admin, @post, @draft] do |form|

...其中@post@draft是同一模型的不同实例。

现在,如果我这样做,我会收到错误:

NoMethodError: undefined method `admin_tour_tour_url'

问题:那么如何使用admin_tour_draft_urledit_等所需的修饰符使表单生成new_ +?

P.S。我在这里走错了路吗?

1 个答案:

答案 0 :(得分:1)

通过从路由中明确提取路径,在form_tag帮助器中指定您自己的路径:

1)佣金路线| grep admin_posts

2)注意路径..可能类似'admin_posts_draft'

3)在路径中添加'_path',这是你的帮助者的名字..在你的代码中使用那个助手

<%= form_tag admin_posts_draft_path(@post, @draft) %>
<% end %>