Ruby on rails 实例变量未传递到Rails 4 rc1中的资产js文件

Ruby on rails 实例变量未传递到Rails 4 rc1中的资产js文件,ruby-on-rails,sprockets,Ruby On Rails,Sprockets,嗨,我使用的是Rails 4rc1。真的不明白,为什么我的feed.js文件中没有识别@feed.id。谢谢你的帮助 NoMethodError in Feeds#index Showing myapp/app/views/layouts/application.haml where line #6 raised: undefined method `id' for nil:NilClass (in myapp/app/assets/javascripts/feeds.js.coffee.er

嗨,我使用的是Rails 4rc1。真的不明白,为什么我的
feed.js
文件中没有识别
@feed.id
。谢谢你的帮助

NoMethodError in Feeds#index
Showing myapp/app/views/layouts/application.haml where line #6 raised:

undefined method `id' for nil:NilClass
(in myapp/app/assets/javascripts/feeds.js.coffee.erb)
#应用程序 #feeds_controller.rb #views/feed/index.haml #assets/javascripts/feeds.js.coffee.erb
$('feed')。淡出

应用程序跟踪:

app/assets/javascripts/feeds.js.coffee.erb:27:in'block in singleton class'
app/assets/javascripts/feeds.js.coffee.erb:-5:in'instance_eval'
app/assets/javascripts/feeds.js.coffee.erb:-5:in'singleton class'
app/assets/javascripts/feeds.js.coffee.erb:-7:in`uuuu tilt_70104733785500'
app/views/layouts/application.haml:6:在“应用程序视图布局应用程序”中
app/controllers/feeds\u controller.rb:28:in'index'

根据经验,我从不将脚本作为ajax响应返回。相反,我返回json对象。这样javascript就可以检查json并在您的情况下为淡出获取正确的id。你最好这样做。它还使您的应用程序更加restful,并允许您将JS保存在资产中。在您的情况下,从不知道控制器中有任何IVAR的资产加载脚本。这就是为什么你会得到一个错误的答案@提要从未在此范围内设置。

您是在动态编译还是预编译?另外,我不确定资产管道是否有权访问控制器实例,从未尝试过这样做。嗨,cpuguy!它只在本地主机上运行。我没有运行任何rake:assets:precompileMake确保
@feed
不是零。您的数据库中是否有任何
Feed
s?
%head
  %title Rails4Bootstrap
  = stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
  = javascript_include_tag "application", "data-turbolinks-track" => true
  = csrf_meta_tags
%body
def index
@feeds = Feed.all
@feed = Feed.new

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @feeds }
  format.js
end
end

def destroy
  @feed = Feed.find(params[:id])
  @feed.destroy
  respond_to do |format|
    format.html { redirect_to feeds_path, notice: "Feed successfully deleted." }
    format.json { head :no_content }
    format.js
  end
end
= form_for(@feed, remote: true) do |f|
  .field
    = f.label :url
    %br/
    = f.text_field :url
  .actions
    = f.submit


- @feeds.each do |feed|
  #feed{"data-id" => feed.id}
  ....
    = link_to 'Delete', feed, method: :delete, remote: true
$('#feed_<%= @feed.id %>').fadeOut