带有JSON参数的渲染模板

时间:2018-10-06 19:08:53

标签: ruby-on-rails

我有newcreate这样的动作:

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 :(得分:0)

如果您希望Rails渲染文件,则需要删除对Redirect 301 /* /index.php/* RedirectMatch 301 /*(.*)/? /index.php/$1 的调用,因为它将有效地阻止任何渲染。 此外,如果您不希望控制器响应不同的格式,最好也跳过对redirect_to的调用。

如果仅调用respond_to,则视图模板将有权访问所有控制器实例变量(例如render action: :new):

@foo