Rails 3.0.10 AJAX проблема, файл create.js.erb - PullRequest
3 голосов
/ 10 декабря 2011

Я новичок в веб-разработке, так что имейте это в виду.

Я создаю свое первое приложение с использованием Rails 3.0.10

У меня есть форма микросообщений, в которую я пытаюсь внедрить AJAX.

Я правильно настроил контроллер (полагаю) и добавил :remote => true к форме микросообщений.

Microposts Controller

def create
      @user = User.find(current_user.id)
      @micropost = current_user.microposts.build(params[:micropost])
      if @micropost.save
        flash[:success] = "Created micropost"
        respond_to do |format|
        format.html { redirect_to @user }
        format.js
      end
      else
        render 'users/show'
      end
    end

Проблема в файле create.js.erb, в представлениях / микросообщениях

В качестве теста, если я поставлю

$("#microposts").html("<p>Hello world!</p>")

работает как положено.

Даже если я встраиваю в него код ruby ​​с переменной экземпляра, это тоже работает.

Но, если я поставлю

$("#microposts").html("<%= render @microposts %> ")

ничего не делает.

На самом деле, как только я пробую любой метод rails, он ничего не делает.

Это мои файлы javascript, которые включены:

/javascripts/jquery.js
/javascripts/jquery_ujs.js
/javascripts/jquery.min.js
/javascripts/application.js

Любая помощь будет принята с благодарностью, я был немного озадачен.

Ответы [ 2 ]

2 голосов
/ 11 декабря 2011

Вы не загружаете @microposts (коллекцию) в действии создания.

Итак, вам нужно либо установить его через что-то вроде:

@microposts = current_user.microposts

Но на самом деле нет необходимости делать еще один вызов БД. Я бы порекомендовал просто добавить (или добавить) ваш элемент #microposts с новым элементом. Что-то вроде:

$("#microposts").prepend("<%= escape_javascript(render '_micrpost_item') %>");

И этот частичный должен иметь возможность использовать объект @micropost из действия create.

0 голосов
/ 10 декабря 2011

Попробуйте вместо этого:

$("#microposts").html("<%= escape_javascript(render @microposts) %> ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...