我有一个表单,用户输入一些信息(文本框,选择框)。在表单内部,我有一个link_to“预览”,用户可以在不保存的情况下预览他们所做的事情。他们可以在我已有的另一个控制器的视图中预览它。任何有关如何做到这一点的建议都将受到高度赞赏。我试过js和ajax,但它没有用。我认为最大的问题是如何将表格参数传递给link_to。我正在使用Ruby on Rails 3.2,jQuery,JavaScript。感谢。
这是一些代码。在第二个控制器中,用户单击预览后检查它是否是预览:
def index
if !params[:access_token].nil?
@p = "something"
@m.access_token = params[:access_token]
@m.title = params[:title]
@m.body = params[:body]
else
@p = "something else"
end
respond_to do |format|
format.html
format.js
end
end
在haml + js中查看(表单的第一个和预览按钮),index.html.haml:
= form_for [:controller, @m], action: action, html: { multipart: true, id: "some_id" }, method: :post, remote: true do |f|
- @access_token = generate_access_token
= hidden_field_tag :access_token, @access_token
.input-prepend
%span.add-on Title
= f.text_field :title, id: "title"
.input-prepend
%span.add-on Body
= f.text_area :body, id: "body"
= f.submit t("save"), class: "btn btn-primary"
= link_to "Preview", " ", id: "preview", target: "_blank", class: "btn"
:javascript
$("#preview").click(function(e) {
var title = $("#title").val();
var body = $("#body").val();
var access_token = $("#access_token").val();
$.get('/' + "?access_token=" + access_token + "&title=" + title + "&body=" + body);
});
这个.get可能没有意义,因为它必须在新选项卡和新视图中打开。
答案 0 :(得分:0)
如果您真的想在新标签/窗口中打开预览,只需将最后一行更改为:
var url = '/' + "?access_token=" + access_token + "&title=" + title + "&body=" + body;
window.open(url, '_blank');
在您的click
活动中,您需要e.preventDefault()
:http://api.jquery.com/event.preventDefault/。
但是,正如其他人所说,您并不需要通过请求新的预览页面来访问服务器。您可能会考虑使用Bootstrap的Modal
或jQuery UI Dialog
之类的东西在同一页面上创建“弹出窗口”。模态内容与您设置的预览页面非常相似,但由{1}}和title
提供。 body
。
答案 1 :(得分:0)
var preview= window.open('/',title,'height=500,width=500');
preview.document.write(body); //you can write html code in it, your script vars in it