- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个用 Ruby on Rails(后端)和 React.js(前端)构建的网站,因此所有内容都是动态加载的,页面更改是通过 AJAX 实现的。如果用户正在浏览文章,我想将 html 页面标题更改为文章标题。因此,如果用户访问 website.com/discuss/14 ,我希望将页面标题更新为文章标题,其中 topic_id = 14。但是,如果用户访问 website.com/#contactpage 或任何其他页面不是一个讨论页面,那么应该有一个默认标题。
现在,我的代码仅适用于 SEO 的_escaped_fragment_,但不适用于普通用户。
这是代码:
--- frontend.html.erb
<!DOCTYPE html>
<html>
<head>
<% if params["_escaped_fragment_"].present? %>
<%= render partial: 'layouts/escaped_title' %>
<% elsif Rails.application.routes.recognize_path('discuss') %>
<%= render partial: 'layouts/discuss_title' %>
<% else %>
<title>website.com:default title</title>
<% end %>
.....rest of my page code
所以第一个条件(转义片段)工作得很好。这是失败的第二个条件(路线 ->讨论)。这是每个部分的代码:
---- _escaped_title.html.erb
<% if params[:_escaped_fragment_] %>
<% if params[:_escaped_fragment_].match(/\/discuss\/(\d+)/) %>
<% topic = Topic.statistic.find_by_id($1) %>
<% if topic %>
<% opts = {sector: true, statistic: true, background: true} %>
<% json = topic.show_data(opts) %>
<% plain_question = ActionView::Base.full_sanitizer.sanitize(topic.question) %>
<title><%= plain_question %> - on website.com</title>
<% end %>
<% end %>
<% end %>
---- _discuss_title.html.erb
<% topic = Topic.find_by_id(params[:id]) %>
<% if topic %>
<% opts = {sector: true, statistic: true, background: true} %>
<% json = topic.show_data(opts) %>
<% plain_question = ActionView::Base.full_sanitizer.sanitize(topic.question) %>
<title><%= plain_question %> - on website.com</title>
<% end %>
我怀疑我的 _discuss_title.html.erb 的前几行不正确,但我不知道如何正确执行。如何正确获取当前主题 ID 并将其传递给变量以供其搜索我的数据库?
非常感谢!
最佳答案
首先通过创建辅助方法来简化您的 View :
module ApplicationHelper
def title
content_tag(:title, @title || "Some default title")
end
end
它是这样使用的:
<!DOCTYPE html>
<html>
<head>
<%= title %>
</head>
我们现在已经将复杂性移出了 View ,我们可以通过设置 View 上下文实例变量 @title
来控制页面标题。
实现这个最简单的方法是在实际需要自定义标题的 Controller 中实际设置标题:
class DiscussionController < ApplicationController
before_filter :set_discussion, only: [:show, :edit, :delete, :update]
before_filter :set_title, only: [:show], if: lambda{ |controller| controller.request.format.html? }
private
def set_discussion
@discussion = Discussion.find(params[:id])
end
def set_title
# since we get the value from the database record and
# not the params we don't need to worry about escaping.
@title = "Discussing article #{ @discussion.id }"
end
end
关于ruby-on-rails - 如何使用基于 :id? 的 RoR 更改页面标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32021539/
我已经使用 RailsInstaller 安装了 Ruby on Rails,还在 Windows 8 中安装了 postgresql。我正在尝试使用文件运行 rails server,但我收到错误消
我正在尝试关注 Ryan Bates RailsCast #196: Nested model form part 1 。 Ryans 版本有两个明显的区别:1)我使用的是内置脚手架,不像他使用的那么
你好,我通过内部连接获取了重复的数据行。我编写了带有 OR 条件的内部连接。 Controller userscontroller.rb @users = User.search(params[:se
我已经创建了一个表,现在我想给表添加一个关联(has_many 关系)。如果我已经创建了一个表并且在创建模型后已经完成了 rake db:migrate,我该怎么办? 在ror中创建表后是否可以添加关
我正在尝试将数据插入 ROR 中的数据库,对于电话号码,我采用了字段整数..但它只采用了 9 位数字..如果我尝试输入 10 位数字。它提供错误作为。 Mysql2::Error: Out of ra
如何获得事件项目菜单?循环生成菜单 我想为这个项目使用其他 css 属性。有任何想法吗?最好是js,jquery... 最佳答案 link_to_unless_
我正在编辑设计生成的用户模型,为用户添加一个语言字段,他可以在其中添加他从组合框中所说的一种或多种语言。 我的问题是在 mysql 中表示这一点的最佳方式是什么。我不知道他会说多少种语言,所以可能最多
我对 Rails 很陌生,并且对这个问题的逻辑有点困惑。 我有一张员工表(使用mysql),每个员工都有一个manager_id键,该键指的是他们向其汇报的员工。例如,标题为“CEO”且 id 为 1
那里的例子很少,但没有一个是非常清楚的(或在旧版本上)。 我想调用 MySQL 过程并检查返回状态(在 rails 4.2 中)。我看到的最常见的方法是调用 result = ActiveRecord
我在 /public 下有一些静态错误页面,我在其中按以下方式链接了一个名为 errors.min.css 的样式表: 但是,当我在除根路径 (/abc/non-existent-url) 之外的路
我想在 RoR 中将一张图片叠加在另一张图片上。 在纯 html 中这样做很容易(来自 https://stackoverflow.com/a/1997397/1760830 ): 当
我正在努力将静态站点引入 ruby on rails 应用程序,以便我们可以构建功能等。 我已经使用页面 Controller 设置了所有静态页面,并将所有静态页面存储在 View /页面下...
我在表格中有一个单元格,看起来像 我想编写一个 CSS 类,根据 play_result.status 的值更改此单元格的字体颜色,绿色代表字符串“OK”,橙色代表“CHANGED”,蓝色代表“
我正在尝试绑定(bind)帖子搜索页面上的类别下拉列表。下拉菜单应将类别图像显示为下拉菜单中类别名称左侧的图标。 下一行绑定(bind)所有类别并在下拉列表中显示它们的名称: 'Any') %> 我
在 Ruby 代码的 TextField 中,我想在模糊事件中检查指定的类是否被应用。请建议一些技术或方法。下面给出了我使用的示例代码。 TextField 的 Ruby 代码:: 4, :t
试图弄清楚 Ruby On Rails 中如何处理并发。 如何获取一段代码来锁定数据库中的行并在需要时强制回滚? 更具体地说,有没有办法强制某一段代码完全完成,如果不回滚?我想在我的项目中为交易添加历
我们正在开发一个 Rails 应用程序,其中一类用户可以编辑和创建文章。有时这些文章包含指向网站上其他文章的链接。执行以下操作的最佳方法是什么? 将链接存储在数据库中 在页面上呈现链接 目前我们有绑定
我有以下 ROR 代码 def func (point,c,r) res=isPointInCircle(point,c,r) #returns true/ false if
如何在 Rails 3.0 中使用 MD5 加密字符串?模型中的 pass = MD5.hexdigest(pass) 产生 未初始化的常量 MyModel::MD5 最佳答案 为此,您可以使用 Ru
我正在寻找有关监控每天大约有 250,000 次插入的特定表的建议。规模不大,但增长迅速,我们不能像现在这样继续工作。 主要应用程序依赖于带有 MySQL 数据库的 RoR4。数据从多个 Radius
我是一名优秀的程序员,十分优秀!