假设我的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 %>
那里没有运气。关于如何将参数用作文本的任何想法?
答案 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>