Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails3ajax问题-UJS_Ruby On Rails_Ajax_Ruby On Rails 3_Unobtrusive Javascript - Fatal编程技术网

Ruby on rails rails3ajax问题-UJS

Ruby on rails rails3ajax问题-UJS,ruby-on-rails,ajax,ruby-on-rails-3,unobtrusive-javascript,Ruby On Rails,Ajax,Ruby On Rails 3,Unobtrusive Javascript,好的,这是我的设置,我想我已经正确设置了所有内容,但是由于某些原因,页面没有显示AJAX响应 基本上,我有一个成员列表,希望在同一页面上用ajax显示他们的“个人资料” 在views/member/index.html.erb中 <table> <tr> <th>Name</th> </tr> <% @members.each do |member| %> <tr> <td>&l

好的,这是我的设置,我想我已经正确设置了所有内容,但是由于某些原因,页面没有显示AJAX响应

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

在views/member/index.html.erb中

<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>
那么在我的_show.js.rjs里我有这个

page.replace_html('memberprofile', render(@member))
然后在my_member.html.erb partial中,我有以下内容:

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
<h1><%= @member.name %></h1>

有几个问题:

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

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


谢谢大家

您必须创建一个只显示成员个人资料的新分部。假设部分名称为_member.html.erb 在索引文件中,执行以下操作:

<%= 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>
在控制器中,执行以下操作:

def get_member
  @member = Member.find_by_id(params[:mid])

  render :partial => "member", :layout => false, :locals => {:member => @member}
end
在您的_member.html.erb部分

<% unless @member.blank? %>
  <h1><%= @member.name %></h1>
<% else %>
   Record not found :(
<% end %>

未找到记录:(

尝试将
\u show.js.rjs
重命名为
show.js.rjs
,看起来您的
format.js
正在呈现默认值
show.html.erb
这种方式很好,但是在单独的文件中使用javascript会更好(请参阅)。这是一个关于如何在Rails 3中实现的好教程
<% unless @member.blank? %>
  <h1><%= @member.name %></h1>
<% else %>
   Record not found :(
<% end %>