rails用这个params渲染动作

时间:2016-12-12 08:13:22

标签: ruby-on-rails parameters action render

我在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

这是我的错误:) enter image description here

global_news参数

未见@newscasts动作

2 个答案:

答案 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