小编Zee*_*han的帖子

Rails 3.0.9 + Devise + Cucumber + Capybara臭名昭着的"没有路线匹配/用户/ sign_out"

我正在使用带有rails 3.0.9,cucumber-rails 1.0.2,capybara 1.0.0的设计1.4.2.我有No route matches "/users/sign_out"错误,当我点击注销.:method => :delete经过这样的问题(no-route-matches-users-sign-out-devise-rails-3)后,我添加了link_to标签.

由于我用jquery替换了原型,我也不得不改变

config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
Run Code Online (Sandbox Code Playgroud)

至

config.action_view.javascript_expansions[:defaults] = %w(jquery jquery_ujs)
Run Code Online (Sandbox Code Playgroud)

绕过rails.js找不到错误.

虽然有了上述更改,但我能够成功注销并重定向到root,当我在FireBug中查看localhost:3000/users/sign_out请求的响应时,它会显示相同的路由错误消息单击此处以查看带有注释的屏幕截图

通过设计成功实现对rails 3 app的身份验证后,当我按照本教程(github.com/RailsApps/rails3-devise-rspec-cucumber/wiki/Tutorial)使用Cucumber + Capybara + RSpec添加功能和规格时,出现以下错误

When I sign in as "user@test.com/please"                              # features/step_definitions/user_steps.rb:41
Then I should be signed in                                            # features/step_definitions/user_steps.rb:49
And I sign out                                                        # features/step_definitions/user_steps.rb:53
  No route matches "/users/sign_out" (ActionController::RoutingError)
  <internal:prelude>:10:in `synchronize'
  ./features/step_definitions/user_steps.rb:55:in `/^I sign out$/'
  features/users/sign_out.feature:10:in `And I sign out'
And I should see "Signed …
Run Code Online (Sandbox Code Playgroud)

rspec cucumber devise capybara ruby-on-rails-3

26
推荐指数
4
解决办法
7846
查看次数

如何从ruby中的CSV文件中获取标头

我需要在解析数据之前验证CSV文件中的标头.

# convert the data into an array of hashes
CSV::Converters[:blank_to_nil] = lambda do |field|
  field && field.empty? ? nil : field
end
csv = CSV.new(file, :headers => true, :header_converters => :symbol, :converters => [:all, :blank_to_nil])
csv_data = csv.to_a.map {|row| row.to_hash }
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用headers方法来获取标题

    headers = csv.headers
Run Code Online (Sandbox Code Playgroud)

但是header方法的问题是"如果不使用标题则返回nil,如果它们尚未被读取则返回true,或者在读取之后返回实际标题".

所以,如果我把headers = csv.headers上面的csv_data = csv.to_a.map {|row| row.to_hash }线headers是true,如果我把它读取数据后,headers包含在阵列中头排.它对我的方法施加了一个指令顺序,这个指令非常难以测试并且编程很糟糕.

有没有办法在这种情况下读取标题行而不强加顺序?我正在使用ruby 2.0.

ruby ruby-on-rails

10
推荐指数
3
解决办法
9702
查看次数

Rails 4设计3.1.1 ActionController :: Devise中的UnknownFormat :: RegistrationsController #new

我正在使用Devise 3.1.1开发Rails 4应用程序进行用户身份验证.当我单击/users/sign_up.user链接时,Rails会抛出以下异常:

ActionController::UnknownFormat in Devise::RegistrationsController#new
ActionController::UnknownFormat

Rails.root: /home/rehan/odesk_work/kiefer-waight/ujoin/ujoin-www

Application Trace | Framework Trace | Full Trace
actionpack (4.0.0) lib/action_controller/metal/mime_responds.rb:372:in `retrieve_collector_from_mimes'
actionpack (4.0.0) lib/action_controller/metal/mime_responds.rb:327:in `respond_with'
devise (3.1.1) app/controllers/devise/registrations_controller.rb:8:in `new'
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (4.0.0) lib/active_support/callbacks.rb:413:in `_run__890637270__process_action__callbacks'
....
Run Code Online (Sandbox Code Playgroud)

我在启动应用程序时实际上是在Devise 3.0.0.rc上,我认为将设备升级到3.1.1可能会解决问题,但事实并非如此.在SO/google/devise github项目中找不到任何有用的东西.任何想法如何解决它.谢谢!

ruby ruby-on-rails devise ruby-on-rails-4

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