0

javascript 内から ruby​​ on rails 関数を呼び出す方法はありますか? たとえば、部分的な => _micropost_form.html.erb があり、ボタンがクリックされたときに別の div に表示する必要があります。これを行う最善の方法は、JavaScriptを使用することだと思いました。現在私は持っています:

document.getElementById("micropost").innerHTML= 

だから私はかなり迷っています。これはかなり単純な問題であると思いますが、うまくいくはずです。ありがとう!

編集:

したがって、_header ファイルにリンクがあります。

<li>Add Content</li>

divと同様に:

<div id="popout"></div>

私のコンテンツコントローラーには、次のメソッドがあります。

def add_content
@content = Content.new
respond_to do |format|
format.html
format.js
end

ファイル (views/contents にあります) add_content.js.erb (_content_form は shared にある html.erb ファイルです)

$('#popout').replaceWith("<%= escape_javascript render
            (:file => 'shared/_content_form') %>");

私が行うはずの呼び出しが含まれていることは知っています<li>Add Content</li>link_to、まだ正しく機能させることができていません。コンソールへの出力は通常、ページの更新のように見えます。どんな助けでも大歓迎です!

4

3 に答える 3

0

ismaelgaによる回答に加えて、静的な HTML コンテンツが含まれている場合、_micropost_form.html.erbそれがerbファイルまたはpartial. そのコンテンツを 内にhidden div配置し、ボタンのクリックに基づいてそれを切り替えることは良い解決策です。

ただし、そのファイルに動的コンテンツがある場合は、AJAX. コメントでFelix Clingによって提供されたリンクのいくつかは、良い出発点です。あなたが望むものを達成するために、ファイルで次のコード行を.js.erbかなり使用していることに気づきました。

$('#micropost').replaceWith("<%= escape_javascript render(:file => 'micropost_form.html.erb') %>");

または、 replaceWithの代わりにjquery appendを使用できます。

于 2012-05-07T00:15:17.120 に答える
0

iframe に表示する:

function appear_it() {
   document.getElementById("micropost").innerHTML = "<iframe id="micropostframe" src="bla/whatever.html"></iframe>";
}

次に、css でスタイルを設定します。

属性 onclick="appear_it(); return false" を持つボタンまたはリンクを用意します。

于 2012-05-06T22:33:25.313 に答える
0

私はあなたが達成しようとしていることを考えて、リクエストでその「div」を非表示としてレンダリングし、次にリンクがjs関数をトリガーしてそれを表示します。

たとえば、表示するものが 1 つしかない場合や、リンクに応じて同じ div に異なるコンテンツを表示するリンクが多数ある場合など、その「リンク」がレンダリングしたいものにいくつかの条件をもたらさない限り、これは良い解決策です。クリック。解決しようとしているのが 2 番目のケースである場合は、本当に ajax 呼び出しを確認する必要があります。ところで、JQuery はこの種のものの友です。

于 2012-05-06T22:46:05.063 に答える