2016-12-12 44 views
0

我的路線在routes.rb中的網頁軌渲染這是行動PARAMS

get ":slug", to: 'site#pages' 

我在site_controller.rb行動

def pages 
    render @page.page_template 
end 

def about 
end 

def contact 
end 

def content 
end 

def local_news 
end 

def global_news 
    @newscasts = Newscast.published.paginate(page: params[:page], per_page: 5) 
end 

,這是我的錯誤:) enter image description here

不見global_news行動我的@newscasts參數

回答

0

由於您只是呈現global_news,因此投射出錯誤。用render您沒有執行控制器操作。所以@newscast從未設置。

你可以在其他答案中使用before過濾器或者手動調用方法,因爲我認爲你在這裏動態地做了些什麼,對吧?

例如

def pages 
    global_news 
    render @page.page_template 
end 
+0

你能否提出替代方案?我怎樣才能做其他方法? –

+0

我更新了我的答案 – Fallenhero

1

您需要定義頁面裏面的方法

@newscasts = Newscast.published.paginate(page: params[:page], per_page: 5) 

@newscasts或者你可以在你的控制器上面的方法寫這篇文章。

before_action :global_news, only: [:pages] 

行動之前會運行裏面只定義了每一個動作之前,您global_news方法:在你的情況,你可以寫(:頁)那麼你可以說你想要的方式。如果您只刪除,那麼global_news將在每個方法之前運行。