我希望将 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 请求。但是,我不确定如何继续进行。
在某些时候,我尝试使用 text_area 而不是 hidden_field。text_area 填充了正确的数据。然而,params 从来没有得到数据。如果我通过浏览器按钮返回,则数据位于 text_area 中,然后再次单击提交,将按预期填充参数。
提前致谢!