[英]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
我的問題是:
謝謝你的幫助
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.