簡體   English   中英

Rails link_to if方法出現問題

[英]Issue with Rails link_to if method

在我的Ruby on Rails應用程序中,我具有如下所示的方法:

  def survey_pack_signed_off(sp, type)
    signed_off = Util::Boolean.humanize(sp.survey_pack_sign_off.present?)#returns Yes if true and No if false
    return signed_off if type == :csv
    if sp.survey_pack_sign_off.present?
      link_to signed_off, admin_survey_pack_sign_off_path(sp.survey_pack_sign_off)
   else
     signed_off
  end
end

我試圖對其進行重構,並使用Rails link_to_if方法:

def survey_pack_signed_off(sp, type)
  signed_off = Util::Boolean.humanize(sp.survey_pack_sign_off.present?)#returns Yes if true and No if false
  return signed_off if type == :csv
  link_to_if (type == :html && sp.survey_pack_sign_off.present?), signed_off,   admin_survey_pack_sign_off_path(sp.survey_pack_sign_off)
end

但是此link_to_if導致以下錯誤:

ActionController::UrlGenerationError: No route matches {:action=>"show", :controller=>"admin/survey_pack_sign_offs", :format=>nil, :id=>nil} missing required keys: [:id]

為什么此代碼不起作用?

嘗試顯式設置id

admin_survey_pack_sign_off_path(id: sp.survey_pack_sign_off)

如果我正確理解您的代碼,並且survey_pack_sign_off包含頁面的某些ID

解決方案是:

  spso = sp.survey_pack_sign_off
  link_to_if spso, signed_off, spso ? admin_survey_pack_sign_off_path(spso) : nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM