Tom*_*man 1 ruby ruby-on-rails
我有一个内部song_link调用的方法link_to.我希望调用者能够传递一个选项哈希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
Run Code Online (Sandbox Code Playgroud)
也就是说,我想检查一下是否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
Run Code Online (Sandbox Code Playgroud)
充分利用与其他一切一样nil好的事实.falsetrue