JavaScript 変数を Rails Controllerに渡したいと考えています。興味深いのは、変数が の内部Canman
で生成され、外部では (まだ) 使用できないことです。
これはおそらく単なる JavaScript であり、必ずしも Canman とは関係ありません。しかし、ここで何が起こっているのかわかりません。
私が従っているアプローチ(ただし、より良い方法があれば完全にオープンです)は、コントローラーからパラメーターを介してデータにアクセスするためだけに、隠しフィールドにjQueryを入力することです。
可能であれば (そしてこれが良い方法である場合)、フォームを避けて、クリック時に JavaScript を呼び出して、その変数をコントローラーに渡したいと思います。
意見
= form_for @post do |form|
= form.hidden_field :base64
= form.submit
JavaScript
$('form').submit(function(event){
Caman('#canvas', img, function() {
var imageBase64 = this.toBase64();
alert(imageBase64); // works fine
$('#post_base64').val(imageBase64);
});
alert(imageBase64); // nothing
});
投稿コントローラー
def update
@post = Post.find(params[:id])
raise '¯\_(ツ)_/¯'
...
end
post_params
=> {"base64"=>""}
また、オプションとして AJAX リクエストを行うこともできると読みました。ただし、それをどのように進めるかはまだわかりません。
ある時点で、hidden_field の代わりに text_area を試してみました。text_area には適切なデータが取り込まれました。ただし、params はデータを取得しませんでした。ブラウザのボタンから戻った場合、データは text_area にあり、送信をもう一度クリックすると、期待どおりにパラメータが入力されます。
前もって感謝します!