在ruby on rails上显示表单提交时没有页面刷新的结果数据(Display result data without page refresh on form submission in rub

编程入门 行业动态 更新时间:2024-10-26 19:28:44
在ruby on rails上显示表单提交时没有页面刷新的结果数据(Display result data without page refresh on form submission in ruby on rails)

我在铁轨上的红宝石很新。 我遇到了问题。 我有一个主题列表,在这个列表下面我有一个表单来添加主题。 我正在尝试添加没有页面刷新的主题,并在主题列表下方显示此主题。 新添加的主题是插入数据库,但没有页面刷新,它不会显示在列表的底部。 这是我的控制器(subject_controller.rb)

class SubjectController < ApplicationController layout 'standard' def list @subjects = Subject.find(:all) end def show @subject = Subject.find(params[:id]) end def create @subject = Subject.new(params[:subject]) if @subject.save render :partial => 'subject', :object => @subject end end end

这是我的部分文件(_subject.html.erb)

<li id="subject_<%= subject.id %>"> <%= link_to subject.name, :action => 'show', :id => subject.id %> <%= "(#{subject.books.count})" -%> </li>

这是我的查看页面(list.html.erb)

<ul id="subject_list"> <% @subjects.each do |c| %> <li><%= link_to c.name, :action => 'show', :id => c.id %> <%= "(#{c.books.count})" -%></li> <% end %> </ul> <div id="add_subject"> <%= form_for(:subject, :url => {:action => 'create'}, :update => "subject_list", :position => :bottom, :html => {:id => 'subject_form'}, :remote => true) do %> Name: <%= text_field "subject", "name" %> <%= submit_tag 'Add', :id => 'create_button', :onClick => 'javascript:submitForm();' %> <% end %> </div>

这是我的js文件

function submitForm(){ jQuery.ajax({ type: 'POST', //url: "/subject/create", data:jQuery('#subject_form').serialize(), error: function(){ }, success: function(data){ alert(data) }, complete: function (){ } }); return false; }

我正在使用ruby 1.9.3和rails 3.2.6

I’m very new in ruby on rails. I’m stuck with a problem. I have a list of subjects and below this list I have a form to add subject. I’m trying to add a subject without page refresh and display this subject just below the list of subject. New added subject is inserting in database but it’s not displaying in bottom of list without page refresh. Here is my controller (subject_controller.rb)

class SubjectController < ApplicationController layout 'standard' def list @subjects = Subject.find(:all) end def show @subject = Subject.find(params[:id]) end def create @subject = Subject.new(params[:subject]) if @subject.save render :partial => 'subject', :object => @subject end end end

Here is my partial file (_subject.html.erb)

<li id="subject_<%= subject.id %>"> <%= link_to subject.name, :action => 'show', :id => subject.id %> <%= "(#{subject.books.count})" -%> </li>

Here is my view page (list.html.erb)

<ul id="subject_list"> <% @subjects.each do |c| %> <li><%= link_to c.name, :action => 'show', :id => c.id %> <%= "(#{c.books.count})" -%></li> <% end %> </ul> <div id="add_subject"> <%= form_for(:subject, :url => {:action => 'create'}, :update => "subject_list", :position => :bottom, :html => {:id => 'subject_form'}, :remote => true) do %> Name: <%= text_field "subject", "name" %> <%= submit_tag 'Add', :id => 'create_button', :onClick => 'javascript:submitForm();' %> <% end %> </div>

Here is my js file

function submitForm(){ jQuery.ajax({ type: 'POST', //url: "/subject/create", data:jQuery('#subject_form').serialize(), error: function(){ }, success: function(data){ alert(data) }, complete: function (){ } }); return false; }

I'm using ruby 1.9.3 and rails 3.2.6

最满意答案

你应该做以下事情 -

在list.html.erb中替换

<%= submit_tag 'Add', :id => 'create_button', :onClick => 'javascript:submitForm();' %>

<%= submit_tag 'Add', :id => 'create_button' %>

2.使用以下内容创建新视图create.js.erb -

$("#subject_list").innerHTML += "<%= escape_javascript(render(:partial => 'subject')) %>"

3.更新您的控制器方法 -

if @subject.save #render :partial => 'subject', :object => @subject respond_to do |format| format.js end end

4.最后在你的主题部分使用实例变量“@subject”而不是“subject”并丢弃你的js文件。

you should do the following -

In your list.html.erb replace

<%= submit_tag 'Add', :id => 'create_button', :onClick => 'javascript:submitForm();' %>

with

<%= submit_tag 'Add', :id => 'create_button' %>

2. Create a new view create.js.erb with the following content -

$("#subject_list").innerHTML += "<%= escape_javascript(render(:partial => 'subject')) %>"

3. Update your controller method -

if @subject.save #render :partial => 'subject', :object => @subject respond_to do |format| format.js end end

4. And finally in your subject partial use instance variable "@subject" instead of "subject" and discard your js file.

更多推荐

本文发布于:2023-08-03 08:53:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1385231.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表单   页面   数据   Display   rails

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!