2011-03-25 48 views
0


我有一個create.js.erb,我想讓這個:如果用戶點擊創建按鈕,站點加載索引部分。rails 3和ajax:set動作怎麼樣?

$('.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

顯示控制器 – fl00r 2011-03-25 17:07:34

+0

您創建行動DEF創建 @event = Event.create(PARAMS [:事件]) 的respond_to做|格式| 如果@ event.save format.html {redirect_to的(events_url)} format.js 別的 format.html {渲染:行動=> 「新」} format.js 端 端 端 – Dodjs 2011-03-25 17:14:48

回答

1

您需要提供部分與它應該呈現的事件。現在你只是提供單一事件,@event.填充@events如果行動是成功的然後更新事件/ _index調用@events.each而不是@event.each

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