Рендеринг шаблона с параметрами JSON - PullRequest
0 голосов
/ 06 октября 2018

У меня есть new и create действия, подобные этому:

def new
 @foo = Foo.new
end

def create
  @foo = Foo.new(foo_params)
  respond_to do |format|
     if @foo.save
       format.html { redirect_to root_path }      
     else
       format.html { render :new } //**this line I want to send params**
     end
  end
end

У меня есть файл jbuilder для нового действия, подобного этому:

new.json.jbuilder

json.foo do
  json.a "Some important info"
  json.b "Some important info"
end

И rails не может прочитать этот файл после неудачной проверки создания.Как отобразить шаблон представления (например, render :new) и отправить некоторые данные json в этом представлении?

У меня есть вызов js, подобный этому:

var json_url = window.location.href + ".json";

var foo;

$.ajax({
  url: json_url,
  dataType: 'json',
  async: false,
  success: function(data) {
    foo = data.foo;
  }
});

1 Ответ

0 голосов
/ 06 октября 2018

Если вы хотите, чтобы Rails рендерил файл, вам нужно удалить вызов к redirect_to, так как это эффективно предотвратит рендеринг.Кроме того, если вы не хотите, чтобы контроллер реагировал на разные форматы, лучше пропустить вызов на respond_to.

Если вы просто позвоните render action: :new, шаблон представления будет иметь доступ квсе переменные экземпляра контроллера (например, @foo):

json.foo do
  json.a @foo.a
  json.b @foo.b
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...