2011-03-25 45 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