首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3 AJAX问题- UJS

Rails 3 AJAX问题- UJS
EN

Stack Overflow用户
提问于 2011-06-13 14:21:30
回答 1查看 329关注 0票数 0

好了,这是我的设置,我想我所有的设置都是正确的,但是由于某种原因,页面没有显示AJAX响应。

基本上我有一个成员列表,并希望显示他们的“个人资料”与ajax在同一页。

在views/member/index.html.erb中

代码语言:javascript
复制
<table>
 <tr>
  <th>Name</th>
 </tr>

<% @members.each do |member| %>
  <tr>
    <td><%= member.name %> &amp; <%= member.sname %></td>
    <td><%= link_to 'Show', member, :remote => true %></td>
    <td><%= link_to 'Edit', edit_member_path(member) %></td>
    <td><%= link_to 'Destroy', member, :confirm => 'Are you sure?', :method => :delete %>    </td>
  </tr>
<% end %>
</table>

<%= link_to 'New Member', new_member_path %>

<div id="memberprofile">

</div>

在我的成员控制器中,我有以下内容:

代码语言:javascript
复制
def show
  @member = Member.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.js
    format.xml  { render :xml => @member }
 end
end

然后在我的_show.js.rjs里有这个

代码语言:javascript
复制
page.replace_html('memberprofile', render(@member))

然后在我的_member.html.erb partial中,我有这个:

代码语言:javascript
复制
<h1><%= @member.name %></h1>

以下是几个问题:

1)在控制台中,它显示“呈现成员/show.html.erb”,但我认为它只会呈现部分成员。为什么会这样呢?

2)当ajax调用发出时,index.html.erb页面中没有发生任何事情。我认为有div钩子加上javascript文件就可以了……

谢谢你们

EN

回答 1

Stack Overflow用户

发布于 2011-06-13 21:03:16

您必须创建一个新的部分,它只显示成员的配置文件。假设索引文件中的部分名称为_member.html.erb:

代码语言:javascript
复制
<%= javascript_include_tag "jquery-1.4.4.min.js", "jquery.form" %>
<script type="text/javascript"> var $j = jQuery.noConflict();</script>

<table>
 <tr>
  <th>Name</th>
 </tr>

<% @members.each do |member| %>
  <tr>
    <td><%= member.name %> &amp; <%= member.sname %></td>
    <td><%= link_to 'Show', "javascript:", :onclick => "show_member(member.id)" %></td>
    <td><%= link_to 'Edit', edit_member_path(member) %></td>
    <td><%= link_to 'Destroy', member, :confirm => 'Are you sure?', :method => :delete %>    </td>
  </tr>
<% end %>
</table>

<%= link_to 'New Member', new_member_path %>

<div id="memberprofile">

</div>


<script type="text/javascript">
  function show_member(m_id) {
   var container = $j("#memberprofile");
        $j.ajax({
            url: '/members/get_member?mid=' + m_id, type: 'get', dataType: 'html',
            processData: false,
            success: function(data) {
                container.html(data);
            }
        });
}
</script>

在你的路线中做一些类似这样的事情:

代码语言:javascript
复制
resources :members do
  collection do
    get :get_member
  end
end

在控制器中执行以下操作:

代码语言:javascript
复制
def get_member
  @member = Member.find_by_id(params[:mid])

  render :partial => "member", :layout => false, :locals => {:member => @member}
end

在_member.html.erb partial中

代码语言:javascript
复制
<% unless @member.blank? %>
  <h1><%= @member.name %></h1>
<% else %>
   Record not found :(
<% end %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6327233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档