2

こんにちは、みんな!

_more_contacts.js.coffeeで呼び出された部分ファイルがありますapp/views/contacts/

このパーシャルは、へのAjax呼び出しを介してレンダリングされ、ビュー内の別のパーシャル() ContactsControllerを更新します。_more_contacts.html.erb

Ajax呼び出し:

<%= link_to "blah", more_contacts_path(@smthg) , method: :post, remote: true, id: "more_contacts", data: {last: raw(@id)} %>

コントローラーコード:

def more_contacts  
  @contacts = Contact.search(params)
  respond_to do |format|  
    format.js { render partial: "more_contacts" }  
  end  
end  

JS部分コード:

$('#more_contacts_table').append('<%=j render partial: "more_contacts", formats: [:html] %>')  

HTML部分:

<% @contacts.each do |contact| %>
  <tr>
    <td><%= link_to contact.company, contact_path(contact.id) %></td>
    <td><%= contact.email %></td>
  </tr>
<% end %>

.erbいくつかのルビーコードが含まれているにもかかわらず 、拡張子を付けるべきではないことを見つけるのに数時間苦労したことに注意してください...

とにかく、すべてが開発でうまく機能しますが、本番環境で機能させることはできません:(
私は自分の中で次のことを試しましたconfig/environments/production.rb

config.serve_static_assets = false  
config.assets.compress = true  
config.assets.compile = true  
config.assets.digest = true  

config.assets.precompile += %w( contacts/more_contacts.js app/views/contacts/more_contacts.js )  
config.assets.precompile << "contacts/_more_contacts.js"  
config.assets.precompile << "#{Rails.root}/app/views/contacts/_more_contacts.js"  
config.assets.precompile << "#{Rails.root}/app/views/contacts/_more_contacts.js.coffee"  
config.assets.precompile << "#{Rails.root}/app/views/contacts/more_contacts.js"  
config.assets.precompile << "#{Rails.root}/app/views/contacts/more_contacts.js.coffee"  

しかし、アセットをコンパイルするためにrakeタスクを実行すると、more_contacts.jsが見つからず(public/assets/manifest.ymlまたはpublic/assets/)、Ajax呼び出しが失敗します...

私はここで立ち往生しています:(何か考え、誰か?

4

1 に答える 1

1

Rails JavaScriptビューが本番環境で機能しないため、Gemfileのアセットグループからコーヒーレールを移動することで修正しました。

于 2012-09-27T18:31:29.400 に答える