2013-02-21 62 views
0

我正在與Railscast 407(它是一個專業版/付費插曲),其中瑞安貝茨增加公共活動功能的網站,即,每個活動(創建或更新食譜或食譜評論)顯示在公共飼料中。在創建應用程序時,他使用下面的代碼從/ views/activities文件夾渲染出一部分,但是,他還添加了一個評論子文件夾,因此創建部分路徑就像這樣views/activities/comment/_create.html.erb,並且它的鏈接就像這部分從文件夾

<%= render "activities/#{activity.trackable_type.underscore}/#{activity.action}", activity: activity %> 



<h1> Activities </h1> 

<% @activities.each do |activity| %> 
    <%= div_for activity do %> 
    <%= link_to activity.user.name, activity.user %> 
    <%= render "activities/#{activity.trackable_type.underscore}/#{activity.action}", activity: activity %> 
    <% end %> 
<% end %> 

我敢肯定我正確複製他的代碼,但是當我試圖跟着,這

The partial name (activities/comment/) is not a valid Ruby identifier; make sure your partial name starts with a letter or underscore, and is followed by any combinations of letters, numbers, or underscores. 

不過,他並沒有得到這個錯誤,我得到這個錯誤在情節。下面是截圖enter image description here這是他的目錄的截圖enter image description here

據透露,在這個階段情節的實際部分看起來像這樣

commented on <%= link_to activity.trackable.recipe.name, activity.trackable.recipe %> 

你能解釋爲什麼這不是爲我工作?

+0

評論'activity.action'是最有可能爲零導致如果「活動/#{} activity.trackable_type.underscore /#{活動錯誤 – jvnill 2013-02-21 03:50:16

+0

第一次檢查。操作}「正在按照您的預期返回路徑。我相信它應該是像「活動/#{activity.trackable_type}/_#{activity.action}」,但不知道:) – sameera207 2013-02-21 03:55:56

回答

0

在情節的一個點,瑞恩·貝茨將默認動作的方法零跟蹤活動(在應用程序控制器)

def track_activity(trackable, action = nil) 
    current_user.activities.create! action: action, trackable: trackable 
    end 

不過,後來他改變了默認像參數動作這

def track_activity(trackable, action = params[:action]) 
    current_user.activities.create! action: action, trackable: trackable 
    end 

如果使用原代碼,那麼除非你明確聲明的動作,它會在db是零,然後在OP視圖代碼將觸發錯誤。因此,使用track_activity的第二個版本更爲安全。

多虧了@jvnill指出這一點

相關問題