2015-02-18 4 views
0

я попытался создал blog.And У меня есть модель post и я хочу назначить ему статус «draft'.For это я добавил логическое поле field :draft, type: Boolean, default: false и метод в контроллере to_draftПочему помощник link_to не работает?

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 

рек маршрутов

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

, но интерпретатор показать мне ошибку

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

где я делаю это неправильно?

+0

показать выход 'грабли routes' .. –

+0

обновления вопроса – vveare138

ответ

1

post_to_draft - просто название маршрута. Вам нужно добавить это имя маршрута либо _url, либо _path, чтобы вызвать помощника. См. Ссылки Routing руководства.

Update link_to вызова следующим образом:

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

Да ,, я читал это как будто '_path' добавил ... :-) –

+0

: D lol, спасибо, человек! – vveare138

+0

@ vveare138 можете ли вы попробовать то, что я предложил? Позвольте мне узнать это из вашего примера. Пожалуйста, попробуйте и дайте мне знать результат –

0

Вы также можете написать его как

= link_to 'To draft', [:to_draft, @post], method: :put 
Смежные вопросы