Rails生成从app / views / model渲染JS partial

时间:2012-09-26 17:01:31

标签: javascript ruby-on-rails partial assets production

大家好!

我在_more_contacts.js.coffee

中有一个名为app/views/contacts/的部分文件

此部分通过对ContactsController的Ajax调用呈现,并在视图中更新另一部分(_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扩展名,即使它包含一些ruby代码......

无论如何,一切都在开发中很有效,但我不能让它在生产中发挥作用:(
我在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.ymlpublic/assets/)并且Ajax调用失败...

我被困在这里:(任何想法,有人吗?

1 个答案:

答案 0 :(得分:1)

通过在我的Gemfile中将coffee-rails移出资产组来修复它,感谢Rails JavaScript views not working in production