1
我有許多任務的項目模型。項目和任務都可以有很多討論,因此我討論了多態模型(參見下文)。鏈接到多態關聯中的自定義動作
我希望能夠點擊鏈接並標記'討論'完成。
我繼續這樣做的方法是在「討論控制器」中進行自定義操作,將「已完成」屬性的布爾值從false更改爲true。如何在討論展示頁面中將link_to helper成功路由到討論控制器中的自定義動作?另外,這是做這件事的最佳做法嗎?
討論模式
1 class Discussion < ActiveRecord::Base
4 belongs_to :user
5 belongs_to :discussionable, :polymorphic => true
28 end
項目模型
1 class Project < ActiveRecord::Base
7 has_many :tasks, :dependent => :destroy
8 has_many :discussions, :as => :discussionable, :dependent => :destroy
24 end
任務模式
1 class Task < ActiveRecord::Base
7 belongs_to :project
14 has_many :discussions, :as => :discussionable, :dependent => :destroy
27 end
所以發[R我的link_to助手看起來像下面,但它不工作(犯規擊打定製「完成」的行動,因爲我想)......
討論節目
7 <%= link_to 'Finish discussion', polymorphic_path([@parent, @discussion]), :action => 'finish' %>
這是本自定義完成動作。在討論控制器(I具有的before_filter限定從PARAMS此@discussion變量[:ID])
33 def finish
34 if @discussion.update_attribute(:finished, true)
35 flash[:notice] = "it worked"
36 else
37 flash[:alert] = 'You must be an admin to do that'
38 end
39 end
我還沒有與routes.rb中撥弄,因爲我不知道是否我不得不。
的routes.rb
1 PrjctMngr::Application.routes.draw do
13
14 # PROJECTS
15 resources :projects do
16 resources :tasks
17 resources :discussions
18 end
19
20 # TASKS
21 resources :tasks do
22 resources :subtasks
23 resources :discussions
24 end
31
32 # DISCUSSIONS
33 resources :discussions do
34 resources :comments
35 end
36
37 end
比我得到這個錯誤> ::的ActionView ::模板錯誤: 未定義的方法'finish_task_discussion_path'爲#<#:0xb3865868> .....爲什麼?另外,我還沒有碰過我的routes.rb文件來照顧這個自定義操作。應該有我嗎? –
oFca
確實你應該有,updatad迴應 –
我已經添加了路線的問題,你可以請用它來告訴我應該如何編輯它? – oFca