如何在视图中将变量从控制器传递到javascript?
我有一个数组@fields,它有文本和一个id,asset\u id。 为了在渲染中将局部变量从控制器传递到视图,我们使用如何在视图中将变量从控制器传递到javascript?,javascript,ruby-on-rails,ruby,ruby-on-rails-3,partial-views,Javascript,Ruby On Rails,Ruby,Ruby On Rails 3,Partial Views,我有一个数组@fields,它有文本和一个id,asset\u id。 为了在渲染中将局部变量从控制器传递到视图,我们使用 render(:template => "assets/invalid", :locals => {:asset_id => params[:id], :fields => @fields}) 观点是 <div id="panel"> <script> alert('Invalid values for ')
render(:template => "assets/invalid", :locals => {:asset_id => params[:id], :fields => @fields})
观点是
<div id="panel">
<script>
alert('Invalid values for ')
window.location = "../assets/"
</script>
</div>
警报('的值无效)
window.location=“../assets/”
这将生成一个弹出框。但是,我希望弹出框重定向到“./assets/assets\u id”,并显示“+字段的无效值”
下面的方法不起作用
<div id="panel">
<script>
var fields = fields
var asset_id = asset_id
alert('Invalid values for ' + fields )
window.location = "../assets/" + asset_id
</script>
</div>
变量字段=字段
var asset\u id=资产\u id
警报(“+字段的值无效)
window.location=“../assets/”+资产id
能这么简单吗
<div id="panel">
<script>
var fields = <%= fields.to_json %>
var asset_id = <%= asset_id.to_json %>
alert('Invalid values for ' + fields )
window.location = "../assets/" + asset_id
</script>
</div>
变量字段=
var资产\u id=
警报(“+字段的值无效)
window.location=“../assets/”+资产id
更新顺便问一下,为什么需要将
字段
或参数
作为局部变量传递,为什么不在您的视图中使用@fields
?可以这么简单吗
<div id="panel">
<script>
var fields = <%= fields.to_json %>
var asset_id = <%= asset_id.to_json %>
alert('Invalid values for ' + fields )
window.location = "../assets/" + asset_id
</script>
</div>
变量字段=
var资产\u id=
警报(“+字段的值无效)
window.location=“../assets/”+资产id
更新顺便问一下,为什么需要将字段
或参数作为局部变量传递,为什么不在视图中使用@fields
<div id="panel">
<script>
var fields = fields
var asset_id = <%= asset_id %>
alert('Invalid values for ' + fields )
window.location = "../assets/" + asset_id
</script>
</div>
变量字段=字段
var资产\u id=
警报(“+字段的值无效)
window.location=“../assets/”+资产id
现在,您可以将数据传递到html以获得高级功能,您可以使用类似于gon的功能查看gon gem,这可能会有所帮助这有什么问题吗
<div id="panel">
<script>
var fields = fields
var asset_id = <%= asset_id %>
alert('Invalid values for ' + fields )
window.location = "../assets/" + asset_id
</script>
</div>
变量字段=字段
var资产\u id=
警报(“+字段的值无效)
window.location=“../assets/”+资产id
现在,您可以将数据传递到html以获取advance thing,您可以使用类似于gon的东西查看gon gem,这可能会有所帮助我在一些应用程序中使用过一种方法,在这些应用程序中,客户端代码需要使用服务器数据,即构建一个哈希并将其呈现为页面上的json文本,并让我的所有JS引用该对象。这与上面提到的方法相同,但更简洁,因为您不必在JS代码中混合很多服务器标记。更易于阅读和维护。我在一些应用程序中使用过一种方法,在这些应用程序中,客户端代码需要使用服务器数据,即构建一个散列并将其呈现为页面上的json文本,并让我的所有JS引用该对象。这与上面提到的方法相同,但更简洁,因为您不必在JS代码中混合很多服务器标记。更易于阅读和维护。当您使用rake routes时,是否看到/assets/:id?是的,我看到了。alertbox重定向到../assets/。我希望它重定向到../assets/asset\u id。张贴您如何获取asset\u id以及如何发送它。因为它是html.erb,所以您可以直接获取它。资产id来自控制器。我想将其发送到视图中的脚本以创建该资产的位置,即重定向到该ID页。渲染中的:local应该将其发送到视图,不是吗?JS必须为window.location创建重定向到的链接。当您执行rake路由时,是否看到/assets/:id?是的,我看到了。alertbox重定向到../assets/。我希望它重定向到../assets/asset\u id。张贴您如何获取asset\u id以及如何发送它。因为它是html.erb,所以您可以直接获取它。资产id来自控制器。我想将其发送到视图中的脚本以创建该资产的位置,即重定向到该ID页。渲染中的:local应该将其发送到视图,不是吗?JS必须为window.location创建重定向到的链接。数组的to_s
不能在Ruby版本中一致地解析为JS。虽然数组的inspect
输出主要是json,但是使用to_json
@Phrogz点更安全,这是非常好的预期。数组的to_s
在Ruby版本中不能作为JS一致地解析。虽然数组的inspect
输出大部分是空的,但是使用to_json
@Phrogz点更安全。to_json方法不起作用。视图(警报框)未显示。如果我像@Viren所说的那样将其保留为字段,则警告框会显示“未定义的值无效”。请检查页面源代码——它被转换为字段的是字符串数组,而asset_id是字符串。to_json方法不起作用。视图(警报框)未显示。如果我像@Viren所说的那样将其保留为字段,则警告框会显示“未定义的值无效”。请检查页面源——它转换为字段的是字符串数组,而资产id是字符串