簡體   English   中英

從JavaScript調用Rails操作

[英]call rails action from javascript

我有一種情況,需要在新窗口中顯示表單的預覽。

我被困在如何從javascript函數調用rails動作預覽以及如何為該動作啟動新窗口的問題。

這是代碼:

click preview link code:

<%= link_to_function "#{image_tag('preview.png', :alt=>'Preview', :title=>'See a preview')}
<span class='text'>Preview</span>",
 "javascript:show_form()" %>

javascript function:

function show_form() {
    //grab the dom
      var html = $('#newform').clone();
    //whats next here?????
}

 rails action:

 def preview
    @html = params[:html]
 end

我的問題是:

  • 如何調用Rails動作預覽?
  • 如何啟動帶有該操作預覽的新窗口?

謝謝你的幫助

Edit:

我能夠使用jquery中的$ .post('/ url')發布數據。 但是,該視圖未呈現。 我可以看到該視圖正在被調用(調試命中斷點),但瀏覽器未呈現它。 我需要在.post()方法中進行任何操作以路由到新網址嗎?

由於您使用的是jQuery,因此不妨使用其AJAX庫: http : //api.jquery.com/category/ajax/

在大多數情況下,使用$.get()$.post()就足夠了。 您可以使用$.ajax()獲得更大的靈活性,但必須輸入更多選項。

基本上,您的目標是調用映射到適當控制器操作的URL。 該操作應返回帶有適當的HTML,XML或JSON的視圖。 如果它只是返回表單的HTML,則可以在結果上使用jQuery以獲取適當的值並執行所需的操作。

編輯:

AJAX調用采用了成功回調函數,您可以提供該函數以實際呈現表單。

例:

$.post('/url', function (data) {
    $('#myForm').html(data); // this would simply inject the returned HTML into the form
});

編輯(再次):

只需重新閱讀您的問題即可。 似乎您要在新窗口中渲染所有內容? 假設您的視圖呈現HTML的整個塊(使用DOCTYPE和<html> ),則可以使用window.open並僅指定URL。 在這種情況下,您根本不需要AJAX。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM