0

Railsを使ったアジャイルWeb開発でRubyonRailsに飛び込んでいます。

私はあなたが使う部分に行きました:

<%= link_to (image_tag(product.image_url), {:action => :add_to_cart, :id => product}, :method => :post) %>

Railsは、RESTfulになるために、各アンカータグでこのインラインJavascriptを開始します

onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', 'gegcVQGk3yN/q+SjZehByuyAHiqh5BSZWa4QHZb8DOU='); f.appendChild(s);f.submit();return false;"

今、私は決して使用しない傾向があり:method => :post、代わりに次のようなプロトタイプJSを記述します。

$$('div.entry a').observe('click', postAnchor);

function postAnchor(event) {
    // create a form around the anchor
    // submit the form with the right product id
}

私のケーキを持ってそれを食べる方法はありますか?リンクで使用:method => :postしますが、Railsは上記のようなJSの小さなブロックをキックアウトしますか?

または、を使用する場合:method => :postは、ゴツゴツしたグックを無視する必要がありますか?

4

1 に答える 1

1

そのJavascriptの一部があり、移動を困難にしています。これがこの部分です。

s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', 'gegcVQGk3yN/q+SjZehByuyAHiqh5BSZWa4QHZb8DOU=');

真正性トークンは、CSRF攻撃を防ぐために使用されます。回避策はありますが、私はインラインjavascriptを使用することを好みます。

そうは言っても、Rails 3はインラインJavaScriptを使用せず、代わりに邪魔になりません。これは、変数(信頼性トークンなど)をHTML 5タグ属性に割り当て、Javascriptで解析することによって行われます。

于 2009-08-17T21:15:06.207 に答える