可以使用Rails中的content_tag将参数作为文本传递吗?

时间:2016-01-20 04:52:22

标签: ruby-on-rails

假设我的Rails项目的HTML文件中有<h1><p>元素。

此元素用于生成页面名称。要关注DRY,我想通过将参数(对应于页面名称)传递给<h1>而不是创建许多静态页面来使该文本动态化。

由于我在application_controller.rb中传递参数,我是通过设置类别来完成的:

def set_category
   session[:category] = params[:category] if params[:category].present?
end

现在,如果页面成为/ history,我想要做的是将历史记录类别发送到<h1>。通过阅读文档,content_tag似乎是最好的方法,所以我尝试了:

 <%= content_tag :div, data: {session[:category]} do %>

那里没有运气。关于如何将参数用作文本的任何想法?

1 个答案:

答案 0 :(得分:0)

我不确定它是否是实现此目的的最佳方式。我相信rails方式是使用帮助器和Content_For

但是,为了回答你的问题,你的方法将起作用。

我想您可能忘记了before_action过滤器。

<强> application_controller

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_action 'set_category'

  def set_category
    session[:category] = params[:category] if params[:category].present?
  end

end

设置<h1>的内容的步骤就像这样

<强> view.erb

<%= content_tag :h1, session[:category] %>

<强> view.erb

<h1>
  <%= session[:category] %>
</h1>