So there is a Rails 3 problem, when you want to submit a form in javascript (without a submit button), it is working on normal way, not ajax. But we can do creating a hidden submit button and then initializing a click event on it what is exactly doing ajax submission. The submit(); is not working anymore because it doesn't call the rails.js functions. It just works when you simple want to create a not ajax post without any confirmation. Let's see an ajax example in view's index.html.erb file:
<%= form_tag "some_url",
:remote => true,
:method => :post,
:name => "some_procedure",
:id => "some_procedure" %>
<%= submit_tag 'procedure_submit_button', :id =>"procedure_submit_button" , :style => "display: none" %>
You can add here your html code for form and create some element what is doing the submission inside a table, for a td:
<td onclick="javascript: procedure_init();" style="cursor: pointer;">
put here an image for example
</td>
</form>
<%= javascript_tag <<-RUBY
function procedure_init()
{
var submit_button="procedure_submit_button";
var form_name="some_procedure";
// here you can build the form, or modify form parameters
$(submit_button).click();
}
RUBY
%>
If you have problems with sessions or current_user quits within ajax rendering, put this code to public/javascripts/application.js. /thanks to this answer/
document.observe("dom:loaded", function() {
Ajax.Responders.register({
onCreate: function(request) {
var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
if (csrf_meta_tag) {
var header = 'X-CSRF-Token',
token = csrf_meta_tag.readAttribute('content');
if (!request.options.requestHeaders) {
request.options.requestHeaders = {};
}
request.options.requestHeaders[header] = token;
}
}
});
});
That's all. Questions?
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.