0

テキストと ID、asset_id を持つ配列 @fields があります。レンダーでコントローラーからビューにローカル変数を渡すには、次を使用します

render(:template => "assets/invalid", :locals => {:asset_id => params[:id], :fields => @fields})

ビューは

<div id="panel">
  <script>
    alert('Invalid values for ')
    window.location = "../assets/" 
  </script>
</div>

これにより、ポップアップ ボックスが生成されます。ただし、ポップアップ ボックスを「../assets/asset_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>
4

3 に答える 3

3

これと同じくらい簡単でしょうか?

<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>

更新ところで、ローカル変数としてfieldsorを渡す必要があるのはなぜですか?ビューで使用しないのはなぜですか?params@fields

于 2012-10-15T17:04:40.560 に答える
1

クライアントコードがサーバーデータを使用する必要があるいくつかのアプリで私が使用したアプローチは、ハッシュを作成し、それをページ上の json リテラルにレンダリングし、すべての JS がそのオブジェクトを参照するようにすることです。これは上記と同じアプローチですが、多くのサーバー タグを JS コードに混在させる必要がないため、少しすっきりしています。読みやすく、維持しやすい。

于 2012-10-15T17:29:48.973 に答える
0

これの何が問題なの

<div id="panel">
  <script>
    var fields = fields
    var asset_id = <%= asset_id %> 
    alert('Invalid values for ' + fields )
    window.location = "../assets/" + asset_id 
  </script>
</div>

これで、前もってデータを html に渡すことができます。gon のようなものを使用できます

于 2012-10-15T17:04:57.723 に答える