JSとレールに少し問題があります。私は現在、このコードを使用して画像を正方形でマークしています。
<html>
<head>
<script language="JavaScript">
function point_it(event){
pos_x = event.offsetX?(event.offsetX):event.pageX-document.getElementById("pointer_div").offsetLeft;
pos_y = event.offsetY?(event.offsetY):event.pageY-document.getElementById("pointer_div").offsetTop;
document.getElementById("cross").style.left = (pos_x-1) ;
document.getElementById("cross").style.top = (pos_y-15) ;
document.getElementById("cross").style.visibility = "visible" ;
document.pointform.form_x.value = pos_x;
document.pointform.form_y.value = pos_y;
}
</script>
</head>
<body>
<form name="pointform" method="post">
<div id="pointer_div" onclick="point_it(event)" style = "background-image:url(<%= asset_path 'mamma.jpg' %>);width:900px;height:720px;">
<img src=<%= asset_path 'point.gif' %> id="cross" style="position:relative;visibility:hidden;z-index:2;"></div>
You pointed on x = <input type="text" name="form_x" size="4" /> - y = <input type="text" name="form_y" size="4" />
</form>
</body>
</html>
これは次のように機能します。大きな画像(mamma.jpg)があり、この画像のどこかをクリックすると、スクリプトはテキストフィールドに下のクリック座標を表示します。さらに、クリックした画像に正方形が表示されます。
ここで、2つの問題があります。1)クリックした場所に関係なく、画像の左上隅に正方形が表示されます。そのための簡単な修正はありますか?
2)座標をデータベースに保存する必要があります。このページを思い出すと、画像の最後をクリックした場所に正方形が表示されます。画像はフォームの一部です(私もformtasticを使用しています)。
これで、Railsがサーバー側であり、JSがクライアント側であり、直接通信させることができないことがわかりましたが、簡単な修正もありますか?または、これを可能にするためにコントローラーを粉砕する必要がありますか?
前もって感謝します!