gpt4 book ai didi

ruby-on-rails - 有选择地将选项传递给另一个方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:27 24 4
gpt4 key购买 nike

我有一个在内部调用 link_to 的方法 song_link。我希望调用者能够将选项散列传递给 song_link,后者将使用与其相关的选项,并将其余选项传递给 link_to。这是我的代码:

  def song_link(song, separator = nil, options = {})
if separator.class == Hash
options = separator
separator = nil # not sure about this logic either!
# I guess I should roll it into the options hash
end

primary_only = false
if options[:primary_only]
options.delete(:primary_only)
primary_only = true
end

link_to title_with_artists(song, separator, primary_only), song_path(:song_slug => song.song_slug, :artist_slug => song.artist_slug), options
end

即,我想检查 options[:primary_only] 是否存在,以及它是否将它用于 song_link 的目的而不将其传递给 link_to

显然这种方法无法扩展,因为我添加了更多与 song_link 相关但与 link_to 相关的选项。我应该怎么做?

最佳答案

简化助手:

def song_link(song, options = {})
separator = options.delete(:separator)
primary_only = options.delete(:primary_only)

name = title_with_artists(song, separator, primary_only)
path = song_path(:song_slug => song.song_slug, :artist_slug => song.artist_slug)
link_to name, path, options
end

利用 nilfalse 一样好而其他一切与 true 一样好这一事实。

关于ruby-on-rails - 有选择地将选项传递给另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1647688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com