рельсы 3 и ajax: установить действие как? - PullRequest
0 голосов
/ 25 марта 2011


У меня есть create.js.erb, я хочу сделать это: если пользователь нажмет кнопку «Создать», индекс загрузки сайта будет частичным.

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

1 Ответ

1 голос
/ 26 марта 2011

Вам необходимо предоставить партиал с событиями, которые он должен рендерить.Прямо сейчас вы просто предоставляете его с единственным событием, @event. Заполните @events, если действие выполнено успешно, обновите 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...