标签: actionpack

您在Flash消息中嵌入链接的方法是什么?

从用户交互的角度来看,具有嵌入式链接的闪存消息(通知,错误,警告等)的能力是很好的.但是,在来自控制器的flash消息中嵌入锚标记很脏.

让我们假设像这样的flash消息对于可用性*是有益的:

嵌入式链接示例Flash消息通知http://img.skitch.com/20090826-xbsa4tb3sjq4fig9nmatakthx3.png (借自DailyMile.com)

在控制器和视图之间采取什么策略来干净利用这样的东西?

ruby-on-rails actionpack

21
推荐指数
2
解决办法
2161
查看次数

我如何要求NumberHelper并使其工作?

我正在尝试编写一个简单的Sinatra,但我需要动作包中的ActionView :: Helpers :: NumberHelper. http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html

问题是,我该如何安装和使用它?

irb(main):001:0> require 'action_view/helpers/number_helper'
irb(main):002:0> number_with_precision(1)
NoMethodError: undefined method `number_with_precision' for main:Object
irb(main):004:0> ActionView::Helpers::NumberHelper.number_with_precision(1)
NoMethodError: undefined method `number_with_precision' for ActionView::Helpers::NumberHelper:Module
Run Code Online (Sandbox Code Playgroud)

为什么这个简单的步骤不起作用?

而且,如果我需要所有废话:

irb(main):001:0> require 'action_pack'
irb(main):004:0> require 'action_view'
irb(main):005:0> include ActionView::Helpers::NumberHelper
irb(main):006:0> number_to_phone(12345)
NoMethodError: undefined method `starts_with?' for "12345":String
Run Code Online (Sandbox Code Playgroud)

如何理解所有这一切?为什么这个模块不起作用?为什么它不需要它需要什么?它需要什么?starts_with在哪里?

谷歌对这些问题完全保持沉默.

UPD:现在我得到以下内容

number_with_precision(1, :locale => 'fr')
TypeError: wrong argument type nil (expected Fixnum)
Run Code Online (Sandbox Code Playgroud)

在我看来,我的NumberHelper已经坏了.这不是一个好的行为.

ruby sinatra actionpack

10
推荐指数
2
解决办法
7584
查看次数

在Rails中url_for的反义词是什么?获取路径并生成解释路线的函数?

大脑有点油炸....如何得到:控制器的哈希值:来自relative_path的动作?

这基本上与url_for相反.在下面的例子中,"some_function"是我正在寻找的神秘函数名称......我知道它很简单,只是记不住或者似乎无法在文档中找到它.

像这样:

some_function('/posts/1/edit')
=> {:controller => 'posts', :action => 'edit', :id => '1'}
Run Code Online (Sandbox Code Playgroud)

ruby routing ruby-on-rails url-routing actionpack

8
推荐指数
2
解决办法
1329
查看次数

活动管理员:无法访问显示/编辑页面

我遇到Active Admin问题.以下是版本:

  • 红宝石'2.2.1'

  • rails'4.2.0'

  • activeadmin:1.0.0.pre1

  • arbre:1.0.3(提到这个,因为它似乎与我的问题有关联)

我们升级到rails 4.2并且还必须升级activeadmin(从0.5开始).经过几次调整(特别是授权系统),一切似乎都很好,除了一个大问题:我只能访问索引页面.当转到带有ID的页面时(例如:" http:// localhost:3000/admin/companies/2968 "),我收到此错误:

没有路由匹配{:action =>"edit",:controller =>"admin/companies",:format => nil,:id =>#{User id:nil,[所有具有nil值的用户属性]}}.缺少必需的密钥:[:id]

看起来param [:id]以某种方式变为空用户,这当然会让它破裂.

这就是我所知道的:

  • 当我将一个binding.pry放在我的ApplicationController上并检查params时,我得到{:action =>"edit",:controller =>"admin/companies",:format => nil,:id => 2968}(所以这里没问题)

  • 引发错误的行是:

active_admin /资源/ show.html.arb

- > arbre/element/builder_method.rb #insert_tag

- > arbre/element/builder_method.rb #build_tag

- > actionpack/actiondispatch/journey/formatter#generate(调用此方法时,path_parameters ID值已损坏,从而引发错误)

知道为什么我的ID参数没有正确解释/我可以进一步查看的地方吗?

编辑>>我在我的routes.rb中有这个

ActiveAdmin.routes(self)
devise_for :admin_users, ActiveAdmin::Devise.config
Run Code Online (Sandbox Code Playgroud)

并且生成的路线看起来很好用rake路线(在这个特定的例子中,我有admin/companies#edit admin_company GET /admin/companies/:id(.:format)

EDIT2 >>如果不清楚,这种情况发生在所有节目页面上.如果我去http:// localhost:3000/admin/projects /例如,它工作正常,但http:// localhost:3000/admin/projects/23815给了我id =空用户以及

ruby ruby-on-rails actionpack activeadmin arbre

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

Rails 4.1.2 - to_param转义斜杠(并打破应用程序)

我在我的应用程序中to_param使用创建自定义URL(此自定义路径包含斜杠):

class Machine < ActiveRecord::Base
  def to_param
    MachinePrettyPath.show_path(self, cut_model_text: true)
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是,由于Rails 4.1.2行为已更改且Rails不允许在URL中使用斜杠(使用自定义URL时),因此它会转义斜杠.

我有这样的路线:

Rails.application.routes.draw do
  scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do
      resources :machines, except: :destroy do
          collection do
            get  :search
            get  'search/:ad_type(/:machine_type(/:machine_subtype(/:brand)))', action: 'search', as: :pretty_search

            get  ':subcategory/:brand(/:model)/:id', action: 'show', as: :pretty
            patch ':subcategory/:brand(/:model)/:id', action: 'update'                                  # To be able to update machines with new rich paths.
          end
      end
  end
end
Run Code Online (Sandbox Code Playgroud)

我尝试在线程中推荐使用glob param只为show方法确保它的工作原理:

resources :machines, except: :destroy do
 #...
end

scope format: false …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails actionpack ruby-on-rails-4.1

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

Ruby-on-Rails:渲染帮助:layout => false

我试图从API访问rails应用程序资源(它发送一个Application/XML GET请求),我不想解析XML文件.

在我的资源控制器中,我有以下内容:

def get_resource
    @my_resource = Resources.new
    render :xml => @my_resource
end
Run Code Online (Sandbox Code Playgroud)

它按预期生成xml文件.如果我用以下代替:

render :layout => false
Run Code Online (Sandbox Code Playgroud)

我的API报告"模板丢失"错误.我也尝试过以下方法:

render :xml => @identity, :layout => false
Run Code Online (Sandbox Code Playgroud)

但无论如何页面呈现.什么是正确的方法?

ruby-on-rails render actionpack

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

摆脱DEPRECATION警告:不推荐使用env,它将从Rails 5.0中删除.

在迁移到Rails 5.0.0.beta1时,我发现了很多弃用警告:

DEPRECATION WARNING: env is deprecated and will be removed from Rails 5.0. (called from XXX at YYY)
Run Code Online (Sandbox Code Playgroud)

我试图摆脱它,并试图找到一个替代方案,但在actionpack changelog中找不到任何东西.

有任何想法吗 ?

actionpack ruby-on-rails-5

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

行动包设计和开发 - 我错过了什么

如果我正确地理解它,Action Pack(见这里:https://partner.microsoft.com/global/40138499)似乎是非常好的价值.

价格是490美元,如果我理解正确,它会附带3x VS2010 Professional许可证,最重要的是,10个Office 2010 Professional Plus用户,1x Server 2008 R2,1x Exchange Server,大量CALS的商业使用许可证.我在这里错过了什么吗?它看起来很便宜.

msdn licensing actionpack

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

Rails:当不使用它返回的对象时,调用 ActionController::Parameters#permit() 会实现什么?

我知道调用params.permit(:foo)会创建一个列入白名单的新ActionController::Parameters实例,:foo以便您可以使用它实例化模型。但是为什么 Discourse CMS 中的以下代码调用它而不使用它的返回值呢?

discourse/app/controllers/drafts_controller.rb: GitHub

class DraftsController < ApplicationController
  # [...]

  def index
    # [...]
    params.permit(:offset)
    params.permit(:limit)

    # [...]

    opts = {
        # [...]
        offset: params[:offset],
        limit: params[:limit]
    }

    stream = Draft.stream(opts)
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails actionpack discourse

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

是否可以在单独的 require 语句中包含 Rails actionpack?

我有一个不从应用程序控制器继承的 API 控制器。我正在尝试包含 respond_to 方法并得到一个方法未定义的错误......所以我需要在顶部使用 actionpack,如下所示:

require 'actionpack'

class Api::V1::UsersController < Api::ApiController
  version 1

  doorkeeper_for :all
  respond_to :json

  def show
    respond_with current_user.as_json(except: :password_digest)
  end
end
Run Code Online (Sandbox Code Playgroud)

我得到了以下信息:

LoadError(无法加载此类文件--actionpack):app/controllers/api/v1/users_controller.rb:1:in `'

我的Gemfile 和 Rails 4.1.2 中已经有gem 'actionpack'(这是 Rails 4 应用程序的一部分)

ruby ruby-on-rails require actionpack

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

如何在Rails 4中不从ApplicationController继承时包含respond_to?

我在Rails 4.1.2应用程序中有一个API控制器,它不从Application控制器继承.我正在尝试包含respond_to方法并获取方法未定义错误....所以然后我需要在顶部的actionpack,如下所示:

require 'action_pack'

class Api::V1::UsersController < Api::ApiController
  version 1

  doorkeeper_for :all
  respond_to :json

  def show
    respond_with current_user.as_json(except: :password_digest)
  end
end
Run Code Online (Sandbox Code Playgroud)

我还是得到了

ActionController::RoutingError (undefined method `respond_to' for Api::V1::UsersController:Class):
Run Code Online (Sandbox Code Playgroud)

但是respond_to方法是MODULE ActionController :: MimeResponds :: ClassMethods的一部分,如果我打开actionpack gem源代码,它可以在子目录的action_pack文件夹下找到.

编辑:

我还应该提到Api :: ApiController有一个父RocketPants :: Base,因为我正在使用火箭pi宝石......宝石的作者在他的自述文件中说:"RocketPants只包括最低限度的apis.在不久的将来,它可以被修改为与ActionController :: Base一起使用,以便更好地与其他宝石兼容."

我特别感兴趣的是如何以独立的方式访问action_pack方法/库(如果可能的话),就像你包含activesupport一样.

ruby ruby-on-rails require actionpack

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

Rails/Actionpack:警告:已初始化常量ICS

试图启动Rails服务器并获得"警告",我不明白.谁知道这意味着什么?warning: already initialized constant ICS

这是在上下文中:

meltemi$ rails s
=> Booting WEBrick
=> Rails 3.1.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
/Users/meltemi/.rvm/gems/ruby-1.9.3-p0@summit/gems/actionpack-3.1.3/lib/action_dispatch/http/mime_type.rb:101: warning: already initialized constant ICS
[2012-01-15 12:28:34] INFO  WEBrick 1.3.1
[2012-01-15 12:28:34] INFO  ruby 1.9.3 (2011-10-30) [x86_64-darwin11.2.0]
[2012-01-15 12:28:34] INFO  WEBrick::HTTPServer#start: pid=61345 port=3000
Run Code Online (Sandbox Code Playgroud)

ruby actionpack rvm ruby-on-rails-3

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

Ruby on Rails - Actionpack:错误的参数类型类(预期模块)(TypeError)

我在使用 Rails 和 heroku 时遇到了这个问题:在我的电脑上一切正常,但由于此错误,heroku 上的相同应用程序不起作用:

/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/helpers.rb:180:in `include': wrong argument type Class (expected Module) (TypeError)
Run Code Online (Sandbox Code Playgroud)

我在这里粘贴完整的堆栈跟踪:

$: heroku run rails console
Running rails console on myapp... up, run.4782
/app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/helpers.rb:180:in `include': wrong argument type Class (expected Module) (TypeError)
    from /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/helpers.rb:180:in `block in add_template_helper'
    from /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/helpers.rb:180:in `module_eval'
    from /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/helpers.rb:180:in `add_template_helper'
    from /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/helpers.rb:109:in `block in helper'
    from /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/helpers.rb:108:in `each'
    from /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/abstract_controller/helpers.rb:108:in `helper'
    from /app/vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.4/lib/action_controller/railties/helpers.rb:17:in `inherited'
    from /app/app/controllers/application_controller.rb:1:in `<top (required)>'
    from /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `require'
    from /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `block in require'
    from /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/dependencies.rb:274:in `require' …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails heroku actionpack ruby-on-rails-4

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