ruby-on-rails - 使用 json 参数渲染模板
问题描述
我有这样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
在 create 的验证失败后,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;
}
});
解决方案
如果您希望 Rails 呈现文件,则需要删除对的调用,redirect_to
因为它会有效地阻止任何呈现。此外,如果您不希望控制器响应不同的格式,最好也跳过对 的调用respond_to
。
如果您只是调用render action: :new
,视图模板将可以访问所有控制器实例变量(如@foo
):
json.foo do
json.a @foo.a
json.b @foo.b
end
推荐阅读
- tensorflow - CuDNNLSTM:调用 ThenRnnForward 失败
- github - Github Desktop 未检测到 db.sqlite
- c# - 从 AudioDevices 中获取扬声器
- docker - docker 引发 rpc 错误:代码 = 14 desc = grpc:连接不可用
- css - 多行 CSS 注释是否有最佳实践?
- javascript - Firebase 交易失败;模拟器组运行得很好
- docker - 在不同主机上获取可重现的 docker 层
- r - 下载处理程序不与观察事件一起使用
- r - 循环将 xts 转换为数据框
- spring-mvc - 使用 Angular 和 Spring 发布包含数组的对象