rails3: как рендерить данные json в представление .js? - PullRequest
0 голосов
/ 14 января 2012

Я пытался следовать инструкциям в этом ответе для рендеринга данных json в файл .js.erb.Но я получаю эту ошибку:

ActionView::MissingTemplate (Missing template activities/json, application/json with {:handlers=>[:erb, :builder], :formats=>[:js, :html], :locale=>[:en, :en]}.

У меня достаточно данных для отправки пользователю, поэтому я хотел отправить как json, чем text / html.

Вот мой контроллер 'some_controller.rb ':

def some_action
    @hash = ...
    @var = ...
    .
    .

    respond_to do |format|
        format.js { render :json }
    end
end

Вот мой взгляд в views / some_controller / some_action.js.erb:

$("#some_div").html("<%=j render :partial => 'some_controller/another_action' %>");

Вот мой another_action.html.erb:

<%= self.formats = ["html"] %>
Var1 = <%= @var1 %>
Hash1 = <%= @hash1.inspect %>

Ответ в ссылке выше неправильный?Разве мы не можем отправить данные json в файл js.erb?Я пытался конвертировать переменные и хэши, используя .to_json.Например:

@hash1 = someMethod(someParams).to_json

Но @ hash1 был обработан как строка в моем последнем html.erb, который, конечно, не может быть проанализирован!Есть ли что-то, что я сделал неправильно или пропустил?

Кроме того, в Интернете нет учебных пособий по рендерингу json в rails, может кто-нибудь дать несколько хороших ссылок для изучения json и rails?Помощь очень ценится.Заранее спасибо.

Спасибо, pR

1 Ответ

0 голосов
/ 17 января 2012

Для рендеринга JSON не требуется файл .js.erb.Все, что вам нужно сделать, это

respond_to do |format|
  format.html # renders .html.erb
  format.json { render :json => {:hash => @hash, :var => @var} }
end

или что-то подобное.

...