小编Sco*_*ach的帖子

如何从Hash中删除一个键并获取Ruby/Rails中的剩余哈希?

要向Hash添加新对,我会:

{:a => 1, :b => 2}.merge!({:c => 3})   #=> {:a => 1, :b => 2, :c => 3}
Run Code Online (Sandbox Code Playgroud)

是否有类似的方法从哈希删除密钥?

这有效:

{:a => 1, :b => 2}.reject! { |k| k == :a }   #=> {:b => 2}
Run Code Online (Sandbox Code Playgroud)

但我希望有类似的东西:

{:a => 1, :b => 2}.delete!(:a)   #=> {:b => 2}
Run Code Online (Sandbox Code Playgroud)

重要的是返回值将是剩余的哈希值,因此我可以执行以下操作:

foo(my_hash.reject! { |k| k == my_key })
Run Code Online (Sandbox Code Playgroud)

在一条线上.

ruby ruby-on-rails hashmap ruby-on-rails-3 ruby-hash

531
推荐指数
12
解决办法
38万
查看次数

路线工作不正常

编辑:感谢您的回复,我尝试了下面列出的所有内容,但现在仍然很幸运。如果我输入 localhosts/posts/new 它会将我带到表单,但是当我从导航栏中单击时链接不起作用。我已经更新了代码并包含了我的 rake 路线结果。

我是 ruby​​ 新手,正在学习教程,但是我的一个链接不起作用,不确定发生了什么。

我创建新帖子的导航链接没有将我带到正确的页面,当我单击“posts_path”的链接时,页面不会改变。

我可以通过在地址栏中键入 /posts/new 来创建新帖子,但是当我单击导航栏上的“新帖子”链接时,页面不会更新(尽管 url 显示 /posts)。知道如何解决这个问题吗?

配置/路由.rb

Rails.application.routes.draw do
get 'sessions/new'
root 'static_pages#home'
get  '/search', to: 'static_pages#search'
get  '/login', to: 'sessions#new'
get  '/posts', to: 'posts#new', as: 'new_post'
post  '/login', to: 'sessions#create'
delete  '/logout', to: 'sessions#destroy'
get  '/signup', to: 'users#new'
get 'users/new'
get 'static_pages/home'
get 'posts/new'
get 'sessions/new'
resources :users
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
resources :posts, only: [:new, :create, :destroy]
end
Run Code Online (Sandbox Code Playgroud)

应用程序/视图/布局/_header.html.erb

<header class="navbar …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

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

从多个对象获取唯一键

如果我有这样的对象数组:

var mountains = [
    { name: 'Kebnekaise', elevation: 2106 },
    { name: 'Mount Ngauruhoe', elevation: 2291, comment: 'aka Mount Doom' }
];
Run Code Online (Sandbox Code Playgroud)

如何获得所有独特的钥匙即['name', 'elevation', 'comment']

javascript

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

Ruby的<opinion> odd </ opinion>默认Hash.new([])行为的原因

我不认为这需要新的,萌芽的Rubyist很长时间才会陷入尝试使用新数组作为默认值创建哈希的陷阱,Hash.new([])但却发现该方法没有按预期运行.(如果您不确定我在说什么,请参阅此Stack Overflow问题和所选答案.)

有谁知道这是否是一个历史或其他原因,这是默认行为?因为我从未遇到过我想要这种行为的情况.而且,即使考虑到Rubyist想要这种行为的假设理由也不是一件容易的事.

我理解这种方式更加一致,因为它以相同的方式处理可变和不可变的默认值,但是对于可变和不可变的默认值具有不同的默认行为似乎并不那么糟糕.

ruby

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