我在routes.rb页面的路线
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
global_news
参数
@newscasts
动作
答案 0 :(得分:1)
您需要在页面内定义@newscasts方法
@newscasts = Newscast.published.paginate(page: params[:page], per_page: 5)
或者您可以在控制器上方将其写在方法之上。
before_action :global_news, only: [:pages]
在操作之前,只在内部定义的每个操作之前运行global_news方法:在您的情况下,您可以编写(:pages),您可以提及您想要的任意数量的方法。如果仅删除,则global_news将在每个方法之前运行。
答案 1 :(得分:0)
这会导致错误,因为您只是呈现global_news
。使用render
,您没有执行控制器操作。所以永远不会设置@newscast。
你可以像在另一个答案中一样使用前置过滤器,也可以手动调用方法,因为我认为你在这里动态地做某事,对吧?
例如
def pages
global_news
render @page.page_template
end