小编am-*_*ils的帖子

如何在Heroku上禁用HTTPS

我创建了一个网站并将其放在Heroku上.然后我在Heroku控制面板中添加了一个自定义域(例如"site.example.com"),并将DNS指向我的Heroku地址.这很好,但是当我访问该网站时,我收到一个大浏览器警告,说该证书是针对herokuapp.com的,而不是针对"site.example.com".如何关闭HTTPS或以其他方式修复它?(我不需要自己的SSL证书.)

注意:如果您的应用程序强迫用户使用SSL,那么Heroku就不会出错.检查production.rb以确保它没有说:

config.force_ssl = true
Run Code Online (Sandbox Code Playgroud)

如果是,请将其更改为false:

config.force_ssl = false
Run Code Online (Sandbox Code Playgroud)

subdomain ssl https cname heroku

20
推荐指数
1
解决办法
1万
查看次数

升级到Rails 4.1后无效的跨源请求

在我从Rails 3.2升级到Rails 4.1之后的某些时候,我开始收到以下错误:

ActionController :: InvalidCrossOriginRequest:安全警告:另一个站点上的嵌入式标记请求受保护的JavaScript.如果您知道自己在做什么,请继续并禁用此操作的伪造保护以允许跨源JavaScript

它们主要来自Windows XP上的Internet Explorer 6或8浏览器,并且永远不会附带用户信息,即使它们正在访问仅向登录用户显示的控制器操作.

如何解决此问题或解决此问题?

(另请参阅升级之前的相关问题:为什么Rails无法从Internet Explorer的Ajax请求中访问会话?)

forms internet-explorer ruby-on-rails antiforgerytoken ruby-on-rails-4

12
推荐指数
1
解决办法
6270
查看次数

如何修改Redcarpet Markdown以便它可以处理类?

我在我的Rails网站上使用Redcarpet Markdown.通常我想将类(或其他属性)添加到段落,表或其他元素中,但它不允许它.如果我用HTML替换markdown元素,那么我也需要用HTML替换内部markdown,这是一个麻烦.

例如,我想将类"table"添加到markdown表元素(因此它得到了Bootstrap的表样式),但是我需要用HTML替换Markdown表.

什么是最简单的解决方案?有没有一种简单的方法来修改Markdown以便它可以处理类?或者,有没有办法在HTML元素中允许Markdown?

示例更新

我想在div,table或paragraph中添加一个类,但仍然在元素中保留markdown.例如,我想生成以下HTML:

<p class="cool">
  <b>Hello world</b> <a href="http://google.com">Google</a>
</p>
Run Code Online (Sandbox Code Playgroud)

有两种可能的解决方案,但我不知道如何使用Redcarpet Markdown进行解决方案:

  1. 获取类的特殊markdown语法,例如:

    {class: cool}
    **Hello world** [Google](http://google.com)

  2. 允许Markdown在HTML元素中工作:

    <p class="cool">
    **Hello world** [Google](http://google.com)
    </p>

目前我只是在纯HTML中做这些元素而没有降价.但是我怎样才能让#1或#2工作?

markdown rendering ruby-on-rails redcarpet github-flavored-markdown

9
推荐指数
1
解决办法
2736
查看次数

为什么Rails无法在Internet Explorer的Ajax请求中访问会话?

我在sessions_helper中有以下代码:

 def current_user
   @current_user ||= User.find_by_remember_token(cookies[:remember_token])
 end
Run Code Online (Sandbox Code Playgroud)

这让我从任何控制器调用current_user来获取当前用户.(我从头开始使用类似于RailstutorialRailscasts的身份验证).

我调用lookup_result了ajax请求,检查服务器以查看特定结果是否准备就绪.

 $.get("/lookup_result?id=<%=id%>");
Run Code Online (Sandbox Code Playgroud)

它转到以下控制器方法:

def lookup result
  user = current_user 
  # do things with user...
end
Run Code Online (Sandbox Code Playgroud)

这通常可以正常工作,但有时Rails无法获取current_user.我怀疑问题是cookie或CSRF令牌在某些情况下无法通过ajax请求传递,但为什么它通常有效?我该如何修复它以便始终有效?

更新:
我不知道如何复制错误.只有已登录的用户才能访问发送该请求的页面(尽管有人可以将ajax请求复制到另一个未登录的浏览器中).我用rollbar报告错误并保存请求数据.

当current_user失败时,这是user-agent的常用数据:

Mozilla/4.0(兼容; MSIE 7.0; Windows NT 5.1; InfoPath.1; ...)

这意味着Internet Explorer通过Ajax发送会话信息存在一些问题.有人知道怎么修这个东西吗?

下面你可以看到它返回的所有数据类别,尽管它对于任何带有"session"的东西都是空的.

时间戳
message.request_data.headers.Accept
message.request_data.headers.Accept-Encoding
message.request_data.headers.Accept-Language
message.request_data.headers.Cf-Connecting-Ip //(CF代表cloudflare)
message.request_data.headers .Cf-Ipcountry
message.request_data.headers.Cf-Ray
message.request_data.headers.Cf-Visitor
message.request_data.headers.Connection
message.request_data.headers.Host
message.request_data.headers.User-Agent
message.request_data.headers .Version
message.request_data.headers.X-Forwarded-For
message.request_data.headers.X-Forwarded-Port
message.request_data.headers.X-Forwarded-Proto
message.request_data.headers.X-Request-Start
message.request_data.方法
message.request_data.params .... //(显示各种参数)
...
message.request_data.session.defer //(所有这些会话项都为空)
message.request_data.session.domain
message.request_data.session .expire_after
message.request_data.session.httponly
message.request_data.session.id
message.request _data.session.path
message.request_data.session.renew
message.request_data.session.secret
message.request_data.session.secure …

ajax jquery ruby-on-rails session-cookies ruby-on-rails-3

5
推荐指数
1
解决办法
821
查看次数

如何在Ruby on Rails中构建多层次的层次结构?

rails应用程序包含许多不同的内容页面.页面被组织成称为章节的小组:

class Page < ActiveRecord::Base
   attr_accessible: section_id #etc..
   belongs_to :section
end

class Section < ActiveRecord::Base
  attr_accessible :title #, etc... 
  has_many :pages
end
Run Code Online (Sandbox Code Playgroud)

部分也需要组织,但最好的方法是什么 - 重用部分本身,或创建一个新的单元模型?

选项1 - 重复使用部分
允许部分具有子部分和父部分.这样,您不需要创建具有与Section类似的字段的另一个模型.有些部分会有很多页面,而其他部分则有很多子部分:

class Section < ActiveRecord::Base
  attr_accessible :parent_id  :title # etc... 
  has_many :pages

  belongs_to :parent, class_name: "Section"
  has_many :children, class_name: "Section", foreign_key: "parent_id"
end
Run Code Online (Sandbox Code Playgroud)

选项2 - 新单元模型
创建另一个名为Unit的模型来组织这些部分.它将有许多类似的字段,但它将是一个明显独立的实体.

class Section < ActiveRecord::Base
  attr_accessible :title, :unit_id # etc... 
  has_many :pages
  belongs_to :units
end

class Unit < ActiveRecord::Base
  attr_accessible :title # etc... 
  has_many :sections
end …
Run Code Online (Sandbox Code Playgroud)

architecture database-design ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
1223
查看次数

如何修复 PG::ProgramLimitExceeded: 错误?

我创建了一个答案表并向其中添加了以下索引:

add_index :answers, [:output, :question_id], unique: true
Run Code Online (Sandbox Code Playgroud)

该索引允许通过其输出和 Question_id 快速查找答案。在创建许多答案时,我收到以下错误:

PG::ProgramLimitExceeded:错误:索引行大小 3088 超过索引
“index_answers_on_output_and_question_id”的最大值 2712
提示:无法对大于缓冲区页 1/3 的值建立索引。
考虑值的 MD5 哈希值的函数索引,或使用全文索引。

我该如何解决这个问题?我可以将唯一性方面转移到模型中,但索引很重要。Rails 是否支持创建 MD5 哈希值?

postgresql indexing ruby-on-rails ruby-on-rails-4.1

5
推荐指数
1
解决办法
2649
查看次数

Request-URI太大错误 - 摆脱GET?

我的网站上有一个表单,用户可以提交答案文本以供控制器检查.
它使用标准的GET形式:

<%= form_tag('/submit', method: "get", remote: true) do %>
Run Code Online (Sandbox Code Playgroud)

但我最近得到了以下错误答案:

Request-URI太大
WEBrick :: HTTPStatus :: RequestURITooLarge

我应该将表单更改为POST以修复错误吗?这需要进行任何其他更改吗?

post ruby-on-rails webrick ruby-on-rails-3

4
推荐指数
1
解决办法
6492
查看次数

如何按最新顺序在rails中排序数据库记录?

我要订购模型中的所有项目,Item以便它首先显示最新的项目。根据Rails指南,以下代码应该起作用:

 Item.order("created_at DESC")
Run Code Online (Sandbox Code Playgroud)

但是,当我在终端中键入该(或多个)品种时,最新的项目始终显示在最后,这就是它们在我的页面上显示的方式。我如何有效地从他最近的第一人那里检索到它们?(我将在每个页面上一次只显示其中一些。)

请注意,我默认的项目范围是最早的。

更新: 这是我得到的SQL:

选择“评论”。*从“评论”中按评论排序。created_atASC,created_at DESC

所以我想我不应该使用默认范围...

postgresql activerecord ruby-on-rails ruby-on-rails-3

4
推荐指数
3
解决办法
5764
查看次数

如何使用Rails响应Twitter Bootstrap?

我在Ruby on Rails网站上使用bootstrap-sass gem.我想让我的布局响应,所以我尝试添加@import "twitter/bootstrap/responsive"到各种文件,但我得到的只是一条消息说:

要导入的文件未找到或不可读:bootstrap/responsive.加载路径:Sass :: Rails :: Importer(site_path/app/assets/stylesheets/bootstrap_and_overrides.css.scss)

ruby-on-rails asset-pipeline responsive-design twitter-bootstrap

3
推荐指数
1
解决办法
7071
查看次数

如何修复Rails模型中的条件验证?

我的用户模型中有以下验证.当用户是访客时,我不希望它运行,所以我添加了一个unlessproc:

with_options :unless => :guest_user? do |user|
    before_save { |user| user.email = email.downcase }
    validates :email, presence: true, uniqueness: {case_sensitive: false}
end
Run Code Online (Sandbox Code Playgroud)

这会调用该方法,guest_user?并且不应在用户是来宾时运行.但是,验证在所有情况下都会运行.如何修复unlessproc以使其有效?

validation ruby-on-rails ruby-on-rails-4

3
推荐指数
1
解决办法
41
查看次数

为什么Rails会在页面上显示所有信息?

我的rails 3.2 app中有以下代码:

 <ul>            
          <% user_to_show.topics.each do |topic| %>
          <li> <%= link_to topic.name, topic %> 
              <ul>
                <%= topic.nodes.each do |node| %>
                  <li> <%= link_to node.title, node %> </li>
                <% end %>
              </ul>
          </li>
          <% end %>    
  </ul>
Run Code Online (Sandbox Code Playgroud)

当我转到用户页面时,我希望它只显示指向该主题中每个主题和节点的链接.它会这样做,但它也会在结尾显示每个节点的实际数据(见下文).我该怎么办呢?

Sample Topic  
node1  
node2 

[#<Node id: 1, title: "node1", intro_content: "sample content", user_id: 2, date_modified: nil, created_at: "2012-07-19.." [etc..] #<Node id: 2, title: "node2", intro_content: "sample 2 content..", user_id: 2, etc.. ]
Run Code Online (Sandbox Code Playgroud)

views ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
57
查看次数

用户与Facebook签约时如何修复空白电子邮件错误(通过Omniauth)

我允许在我的Rails网站上进行Facebook身份验证,并使用Omniauth.我最近在生产中收到以下错误:

ActiveRecord :: RecordInvalid:验证失败:电子邮件不能为空,电子邮件无效

通常Facebook注册工作正常,那么什么会导致这个特定的错误?下面是我用Omniauth创建用户的代码.

def self.create_from_omniauth(auth)
   where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.name = auth.info.name
      user.email = auth[:info][:email]
      user.password = SecureRandom.urlsafe_base64(n=10)
      user.save!
   end
end
Run Code Online (Sandbox Code Playgroud)

authentication validation ruby-on-rails omniauth ruby-on-rails-3

2
推荐指数
1
解决办法
1377
查看次数

如何阻止路由错误错误导致各种警告?

我在 Heroku 上的 Rails 4 应用程序(目前在 unicorn 上)通常没有太多错误,但它会收到大量错误的 URL。每当输入错误的 URL 时,用户都会看到我的 404 页面,并且在 Rails 中引发 ActionController::RoutingError。这会作为错误报告给Rollbar和 NewRelic,并且它们会发出警报。我不断收到来自 NewRelic 的关于所有这些“错误”的警报。如何防止路由错误被报告为错误?

(我尝试将 newrelic.yml 中的一行更改为,ignore_errors: ActionController::RoutingError但没有帮助。)

error-handling ruby-on-rails heroku newrelic ruby-on-rails-4

0
推荐指数
1
解决办法
1293
查看次数