2017-06-12 5 views
0

のRails 5.1.1、ヘルパーにすべてのアプリ上で再利用されますビューピースをリファクタリングしようと ルビー2.2.5p319、 Carrierwave 1.1.0Carrierwaveのasset_pathは、レールのヘルパーで使用される未定義のメソッドになり

私は壁にぶつかっている。問題モデルには、イメージとイメージバックという2つのキャリアウェーブアップローダがあります。

def issue_image_display(issue, graphic, size, sizeinpx, lodge = nil) 
    if graphic 
    if graphic == "imageback" 
     link_to image_tag(issue.imageback_url(size)), 
     imageback_url(:full), rel: :lazybox 
    else 
     link_to image_tag(issue.image_url(size)), 
     image_url(:full), rel: :lazybox 
    end 
    else 
    image_tag(
     "missing_flap.jpg", 
     alt: "No Flap Image for #{issue.combined}", 
     style: "width: #{sizeinpx}px" 
    ) 
    end 
end 

これはされている:私は、私は(application_helper.rbに)

ヘルパーメソッド(次のコードでgraphicとして渡された)ヒットしようとしている列を決定するために、メソッドに変数を渡しています次によって呼び出さ:

<ul class="issue-list" id="issues"> 
    <div class="page"> 
    <%# cache issue do %> 
     <%= render partial: "issues/issue_small", 
       collection: @issues, 
       as: :issue, 
       wishlist: false, 
       locals: { 
       size: :list, 
       sizeinpx: '200' 
       } %> 
    <%# end %> 
    </div> 
</ul> 

と実際のヘルパーメソッド呼び出し、反復処理されている部分:

<li class="issue-container"> 
    <article class="issue"> 
    <%= issue_image_display(issue, issue.image, size, sizeinpx) %> 
    <p class="lodge-name"> 
     <%= link_to issue.combined, lodge_issue_path(issue.lodge, issue) %> 
     <span><%= issue.first_issue.stamp("1969") if issue.first_issue %> | (OA BBv6: <%= issue.oa_bb_combined %>)</span> 
    </p> 
    <% if :wishlist == true -%> 
    <p class="add-to-wishlist"> 
     <%= link_to 'Add to Wishlist', wishlist_items_path(issue_id: issue.id), method: :post, class: "button button-small" %> 
    </p> 
    <% end -%> 
    </article> 
</li> 

エラーがある:

ActionView::Template::Error at /issues 
undefined method `asset_path' for #<ImageUploader::Uploader70194310458580:0x007faec5409400> 
+0

コードのどの行にエラーが表示されますか? – Pavan

+0

それは、部分を呼び出すファイルの行16として呼び出します。これは、他のものを含めて整理すると次のようになります。 '<%= render partial:" issues/issue_small "、' –

答えて

0

は、上記の二つの障害があるが判明しました。 ActionViewはそれらをマスキングしていたので、私は意味のある行番号が得られるまでそれを上げ続けました。

if graphic 
    if graphic == "imageback" 
     link_to image_tag(issue.imageback_url(size)), 
     imageback_url(:full), rel: :lazybox 
    else 
     link_to image_tag(issue.image_url(size)), 
     image_url(:full), rel: :lazybox 
    end 
    else 

image_urlissueコールを行方不明になった、そしてそれは何のcarrierwaveメソッドを呼び出していました。

2番目の問題は、if graphicのチェックでした。それは、それが書かれている方法で常に真実であることが分かります。それを越えるためには、それはif !graphic.blank?になる必要があった。それは実際のエラーには二次的なものでしたが、将来このような奇妙なことが起こる人のために文書化しています。

関連する問題