为什么帮助link_to不起作用?

时间:2015-02-18 11:12:56

标签: ruby-on-rails

我试图创建一个博客。我有一个模型post,我想要分配他,状态'草稿'。为此,我添加了布尔字段field :draft, type: Boolean, default: false和方法控制器to_draft

  def to_draft
    @post = Post.find(params[:post_id] || params[:id])
    @post.draft = true
    @post.save
    redirect_to posts_path
  end

和帮助者link_to,当我点击链接时,发布分配草稿状态

  = link_to 'To draft', post_to_draft(@post), method: :put

rake routes

   post_to_draft PUT    /posts/:post_id/to_draft(.:format)          posts#to_draft

但是口译员给我看错了

undefined method `post_to_draft' for #<#<Class:0x007ff7096ddd70>:0x000000064b5068>

我做错了吗?

2 个答案:

答案 0 :(得分:1)

post_to_draft只是一个路线名称。您需要使用_url_path附加此路由名称以调用您所关注的帮助程序。请参考链接的Routing指南。

更新link_to电话如下:

= link_to 'To draft', post_to_draft_path(@post), method: :put

答案 1 :(得分:0)

你也可以把它写成

= link_to 'To draft', [:to_draft, @post], method: :put