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