2011-03-25 4 views
0


나는 create.js.erb를 가지고 있는데, 이걸 만들고 싶다. 사용자가 버튼을 만들려면 클릭하면 사이트로드 인덱스 부분이된다. 나는이를 사용하는 경우레일 3과 아약스 : 어떻게 액션을 설정 하시겠습니까?

$('.content').html("<%= escape_javascript(render(:partial => "events/index")) %>"); 

, 나는 오류 @의 objectname.each 잘못 얻을, 나는 create.js.erb 파일에 난 단지 부분을 호출하기 때문에 그것이 비어 생각하고, 나는 인덱스 메서드를 호출 생각합니다 어쩐지. 그렇지?

def create 
    @event = Event.create(params[:event]) 
    respond_to do |format| 
     if @event.save 
     format.html { redirect_to(events_url) } 
     format.js 
     else 
     format.html { render :action => "new" } 
     format.js 
     end 
    end 
end 

오류 메시지 :

ActionView::Template::Error (undefined method `each' for #<Event:0x00000102182830>): 
    1: - @event.each do |events| 
    2: %h3.title= events.name 
+0

데프 @event = Event.create ([이벤트] PARAMS)를 만들 컨트롤러 – fl00r

+0

에서 만드는 행동을 보여 경우 @ event.save format.html {redirect_to (events_url)} format.js 다른 format.html {렌더링 : 행동 => "새로운"} format.js 끝 끝 끝 – Dodjs

답변

1

귀하는 렌더링되어야하는 이벤트와 부분을 제공해야합니다. 작업이 성공하면 @event.@events으로 채우고 @event.each 대신 @events.each을 호출하기 위해 events/_index를 업데이트하십시오. | 형식 |을 respond_to :

def create 
    @event = Event.create(params[:event]) 
    respond_to do |format| 
    if @event.save 
     format.html { redirect_to(events_url) } 
     format.js { 
     @events = Event.all 
     } 
    else 
     format.html { render :action => "new" } 
     format.js 
    end 
    end 
end 
관련 문제