정말 간단한 페이지를 만들려고합니다. 사진 갤러리 용 동적 JavaScript를 생성해야합니다. 직관적으로 단순하지만, 나는 크게 어려움을 겪고있다. 내 컨트롤러에서 Photo
의 목록을 @photos
으로 작성한 다음 내 photo.js.erb
파일의 각 사진에 대한 일부 JavaScript를 반복해야합니다.레일 3 : .js.erb 파일에서 인스턴스 변수에 액세스 할 수 없습니다.
그러나 .js.erb 파일에 도달하면 @photos
변수는 0이됩니다. 무엇이 누락 되었습니까?
컨트롤러/photos_controller.rb 파일 :
class PhotosController < ApplicationController
layout "application_photos"
def category
@photos = ...(generates collection of Photos)...
end
end
보기/사진/category.html.haml 파일 :
= content_for :head do
// @photos is still initialized at this point
= javascript_include_tag "photos"
// This partial only loads some more markup, it's inconsequential.
= render :partial => 'default_slideshow'
자바 스크립트/photos.js.erb 파일 :
jQuery(function($){
// Throws NilClass error
<% puts 'Photos: ' + @photos %>
});
나는이 질문을 12 번이나 받았지만 이전에 받아 들여진 대답 중 실제로 나를 위해 일한 것이 하나도 없다는 것을 알고있다. 어떤 제안이라도 대단히 감사하겠습니다.
이 사실을 기억하십시오 : 자산 파일은 컨트롤러에 선언 된 인스턴스 변수에 액세스 할 수 없습니다. – jvnill
알았어, 잘됐다. 이 문제를 어떻게 해결할 수 있습니까? –
'category.html.haml' 뷰를 만든 다음 페이지의 내용을 jQueryize 할 수 없습니까? JS에서'@ photos'에 정말로 접근해야합니까? 정말로 필요하다면'.js.erb'을 컨트롤러에서 뷰로 렌더링해야 할 것입니다. –