小编nic*_*hvi的帖子

在Ruby on Rails中访问自定义标头变量

在阅读了下面的问题(Ruby on Rails中的授权标题,使用密钥HTTP_AUTHORIZATION而不是授权进行访问?)我遇到了与OP类似的问题,但建议的答案似乎并没有解决我的问题.

我在本地托管服务器(通过Postman)的调用中定义了一个自定义标头:

@Igor:我实际上使用Postman,所以我只是添加了curl代码来演示我做了什么.我想最好包含一个截图:

在此输入图像描述

这是我的控制器中的代码,它试图读取所述标题:

def authenticate_through_header
  custom_header_value = request.headers['custom_header']
end
Run Code Online (Sandbox Code Playgroud)

但是,这回归nil.另一方面,request.headers['HTTP_CUSTOM_HEADER']返回值.根据我最初链接的问题,我应该能够通过在括号[]中传递名称来获取值 - 这是在较新的Rails版本中已经更改的内容吗?

干杯:-)

更新:它还可以通过以下方式访问变量:request.headers['custom-header'].所以显然它可以用连字符替换下划线,这似乎很奇怪.

ruby-on-rails http ruby-on-rails-4

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

将HTML返回给AJAX Rails调用

在阅读David Heinemeier Hansson 关于服务器生成的javascript 的博客文章后,我决定回顾一下我在Rails应用程序中进行AJAX调用的方法.David建议创建一个.js.erb模板,它只是嵌入了服务器上生成的ruby代码的javascript,而不是在客户端javascript中进行任何DOM操作.

另一种方法当然是简单地在客户端执行所有操作,并且(例如)从服务器返回表示更新对象的JSON对象,并使用javascript来执行所有DOM操作.

我不喜欢第一种方法有两个原因:

1)我在我的应用程序中使用HAML和Coffeescript,并且觉得通过使用vanilla javascript和ERB会不断地使用不同语言的代码膨胀我的代码库(也许可以创建.coffee.haml模板而不是js.erb,我不知道)

2)我真的不喜欢"乱丢"我的视图文件夹的想法,主要是javascript文件,嵌入了一点ruby.

正如大卫在他的博客文章中谈到的那样,第二种方法非常依赖于客户端javascript,这可能导致客户端javascript代码膨胀,并且可能需要客户端模板,在最坏的情况下可能意味着几乎是模板数量的两倍.

我决定采用的方法(并且想询问是否完全是愚蠢的方式)如下:

1)设置remote: true标志以使链接和表单利用AJAX发布到服务器.

2)在我的控制器中,将所有内容作为html处理,如果请求是AJAX请求,则只需在没有布局的情况下呈现:render partial: '<partial-name>', layout: false if request.xhr?.这只是返回partial的HTML,并评估ruby代码.

3)在资产javascript文件(例如<partial-name>.js.coffee)中,监听ajax:success并附加响应中的HTML.

我喜欢这种方法,因为(在我相当简单的应用程序中)这允许我将所有代码保存在HAML/Coffeescript中,并避免使用任何javascript模板.

我意识到如果应用程序的复杂性增长,这个问题可能会有不同的特征,但我仍然认为这是一个有效的问题:这是一个不好的方法来为Rails应用程序实现基于AJAX的架构(如果是这样的话) ,为什么?即有什么理由为什么从AJAX调用返回HTML而不是JSON是一个坏主意?)或者这是我应该继续使用的东西?

谢谢 :-)

javascript ajax ruby-on-rails coffeescript ruby-on-rails-4

7
推荐指数
1
解决办法
3621
查看次数

禁用Rack :: CommonLogger,无需修补猴子

所以,我想为我的sinatra应用程序完全自定义日志记录,但我似乎无法禁用Rack::CommonLogger.

根据sinatra文档,我应该做的是添加以下行(尝试将其设置false为):

set :logging, nil
Run Code Online (Sandbox Code Playgroud)

到我的配置.但这不起作用,我仍然在终端中收到类似Apache的日志消息.所以我到目前为止找到的唯一解决方案是修补该死的东西.

module Rack
  class CommonLogger
    def call(env)
      # do nothing
      @app.call(env)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

任何人都有任何想法,如果有可能禁用这个没有重新处理这些问题?

ruby rack sinatra puma

6
推荐指数
2
解决办法
1689
查看次数

没有指定默认引擎,也没有提供扩展名(expressJS&jade)

这是我的(简化)app.coffee:

app.set('views', __dirname + '/app/views')
app.set('view enigne', 'jade')

app.listen 8000
Run Code Online (Sandbox Code Playgroud)

但是,当我在浏览器中访问我的应用程序时,我收到以下错误消息:

Error: No default engine was specified and no extension was provided
Run Code Online (Sandbox Code Playgroud)

编辑:事实证明我是一个白痴,错误拼写"引擎".感谢@lascort指出它!

node.js express pug

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

圆角周围的Chrome图像边框消失

因此,这就是问题所在:http : //bildr.no/view/927562

仔细看看:http : //bildr.no/view/927563

如您所见,每个角的边框变为不可见。这是图像的CSS代码:

#contentImage {
  float: left;
  border: 1px solid #C4C4C4;
  border-radius: 8px;
  margin-right: 25px;
}
Run Code Online (Sandbox Code Playgroud)


<img src="images/image.jpg" id=contentImage" />

任何帮助将大大赞赏:-)

css google-chrome rounded-corners css3

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

将局部变量传递到每个环路轨道3的部分内部

这是我渲染部分的代码(正确生成了@parties集合,我测试过了):

        <% @parties.each do |party| %>
            <div class="item">
              <%= render 'parties/party', :object => party  %>
            </div>
        <% end %>
Run Code Online (Sandbox Code Playgroud)

这是部分代码:

<%= party.name %>
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

undefined method `name' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

我在我的智慧结束,有人请求帮助: - |

此外,这是控制器呈现包含部分视图的控制器的代码(控制器名为default_controller):

def index
    @parties = Party.all
end
Run Code Online (Sandbox Code Playgroud)

这不是party_controller,这有什么后果吗?

ruby-on-rails partials ruby-on-rails-3

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

覆盖播放2.0的默认i18n消息

我们使用@Casraint.Required来验证表单的字段,这会生成ValidationError - 这一切都很好.此错误有一个标准错误消息(error.required),它与以下字符串相关联:"此字段是必需的".

但是,我们想要控制这个字符串并(可能)覆盖它 - 我们怎么能这样做?我们的conf/-folder中有一个消息文件,其中包含以下行:

error.required = dummytext
Run Code Online (Sandbox Code Playgroud)

但错误消息仍然显示"此字段是必需的" - 即使正在读取消息文件(我们做了一些测试).

我们如何覆盖这些消息?

谢谢!

validation internationalization playframework

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

选择一个通用编辑器

我最近读完了实用程序员(http://goo.gl/UyKMTm)后,我决定尝试应用本书中描述的一些技巧,更具体地说,我决定应用本书中的一个技巧. :即使用一个编辑器,并且知道该编辑该死的.

选择的武器/编辑器显然是相当重要的,我想避免学习说记事本的每个功能,只是为了发现它最终并没有真​​正削减它(我猜记事本不是那么可配置).我真的不打算将此作为"编辑X比编辑Y更好"的问题,而是一个让人们讨论他们选择的编辑的论坛 - 权衡利弊.

我知道像vimemacs这样的编辑在经验丰富的程序员中是一个相当受欢迎的选择,我正在考虑使用其中任何一个,但学习曲线有点让我失望.

我决定选择Sublime Text作为我的通用编辑器,只是因为我觉得它涵盖了可配置,可扩展和可编程的要求,我喜欢它的外观和感觉.

但是,如果有人能给我任何理由为什么使用Sublime作为我的通用编辑器将是彻头彻尾的愚蠢,或者是否真的值得花几个小时学习有效地使用vim而不是直接破解和削减崇高,我真的很感激:-)

干杯!

vim emacs editor sublimetext

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

在Rails 4中未检测到嵌套资源的路由

# routes.rb
resources :assets, only: [:new, :create, :delete]

# asset.rb
class Asset < ActiveRecord::Base
  belongs_to :post
end

# rake routes
         Prefix Verb   URI Pattern                            Controller#Action
post_comments POST   /posts/:post_id/comments(.:format)     comments#create
new_post_comment GET    /posts/:post_id/comments/new(.:format) comments#new
       posts GET    /posts(.:format)                       posts#index
             POST   /posts(.:format)                       posts#create
    new_post GET    /posts/new(.:format)                   posts#new
   edit_post GET    /posts/:id/edit(.:format)              posts#edit
        post GET    /posts/:id(.:format)                   posts#show
             PATCH  /posts/:id(.:format)                   posts#update
             PUT    /posts/:id(.:format)                   posts#update
             DELETE /posts/:id(.:format)                   posts#destroy
   post_form POST   /post_form(.:format)                   posts#form
        root GET    /                                      posts#index
Run Code Online (Sandbox Code Playgroud)

没有路由显示assets,但我需要能够删除它们而不指定post_id,因为它们可以在没有帖子的情况下存在(为了能够在新帖子中上传文件和接收这些文件所必需的).

路线assets#newassets#create工作正常,但不是assets#destroy(我得到一个错误说DELETE …

ruby-on-rails nested-resources ruby-on-rails-4

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