0
所以我在使用內部使用的寶石時發現了這個奇怪的異常。Rails/Ruby發送方法不能用params建立路徑?
我們有這樣的私有方法
private
def redirect_to_element(element, next_upload)
send("scorecard_#{element.base_class_name.underscore}_path", current_scorecard, current_tab(element, next_upload))
end
剛剛建立動態根據傳遞給它什麼元素的路徑。我想要做的是讓那些動態路徑通過一些參數。但我得到這個錯誤
undefined method `scorecard_enterprise_development_path(ignore_tracking: true)' for #<#<Class:0x007ff767a702e0>:0x007ff767899a20>
所以在控制檯我想幾件事情,這是我發現了什麼。
>> scorecard_enterprise_development_path
=> "/scorecards/338/enterprise_development"
>> send('scorecard_enterprise_development_path')
=> "/scorecards/338/enterprise_development"
>> scorecard_enterprise_development_path(ignore_tracking: true)
=> "/scorecards/338/enterprise_development?ignore_tracking=true"
>> send('scorecard_enterprise_development_path(ignore_tracking: true)')
!! #<NoMethodError: undefined method `scorecard_enterprise_development_path(ignore_tracking: true)' for #<#<Class:0x007ff767a702e0>:0x007ff767899a20>>
使用send
方法使用參數構建路徑將失敗。誰能解釋爲什麼會發生這種情況?
我使用,紅寶石-v 1.9.3p327和軌道-v 3.2.16
這工作在控制檯中。只有它看起來好像有一些限制你能傳遞多少?如果我將方法設置爲send(「scorecard _#{element.base_class_name.underscore} _path」,ignore_tracking:true,current_scorecard,current_tab(element,next_upload)),則'語法錯誤,意外',',期待tASSOC' – TheLegend
嘗試使用'send(「scorecard _#{element.base_class_name.underscore} _path」,{ignore_tracking:true},current_scorecard,current_tab(element,next_upload))'? – ouranos
酷你的男人,我剛剛添加了'ignore_tracking:true'作爲最後一個參數,它效果很好!萬分感謝 – TheLegend