0

对不起,如果我把事情搞砸了,但我是新来的,所以请多多包涵。

这就是我想做的事情。我想根据数据库中的用户 ID 为链接动态分配 ID 标签。然后根据我单击的链接,我希望该链接调用控制器助手并将其 ID 传递给助手方法。

到目前为止,我能够为每个用户动态分配每个链接,但我的问题是当我单击链接并使用 ID 调用控制器方法callThis时,它会获取最后一个用户(数据库中的最后一个用户)的 ID而不是我单击的链接的用户 ID。

我的问题是,我如何让它发送我点击的链接的 ID,而不是数据库中最后一个用户的 ID?

这是我的代码。

index.html.erb

<div id="profile"></div>
<table>
<% @users.each do |u| %>
    <% if !u.nil? and u.department_id == department.id %>
      <tr class="<%= department.id %>" style="display:none;text-align:left;">
        <td>
          <a href="#id-<%= u.id %>" id="id-<%= u.id %>" onclick="<%= callThis(u.id) %>; refresh();">
            <%= "#{u.first_name} #{u.last_name}" %> 
          </a>
        </td>
      </tr>
    <% end %> 
  <% end %>
</table>
<script>
  function refresh(){
    $('#profile').html("<%= escape_javascript(render(:partial => 'profile')) %>"); 
  }
</script>

教授控制器.rb

class ProfessorsController < ApplicationController
  helper_method :callThis
  helper_attr :get_id
  attr_accessor :get_id

  def index
    @departments = Department.all
    @users = User.with_role :Professor
    @search  = @users.search(params[:q])
    @result = @search.result
    @id = 0
  end

  def callThis(id)
    @id = id
  end
  def get_id
    @id
  end
end

profile.html.erb

<%= get_id.to_s %>
4

1 回答 1

0

为什么不直接将 id 传回 params 哈希并使用 ajax 来呈现配置文件视图?

   <td>
     <%= link_to "#{u.first_name} #{u.last_name}", name_of_your_path({:user_id => u.id), :"data-remote" => true %>

    </td>

然后在你的控制器中

class ProfessorsController < ApplicationController
  def profile
    @user = User.find(params[:user_id])
    respond_to do |format|
      format.js
    end
  end
 end

然后创建一个带有 js 扩展名的视图。“profile.js.erb”和那个文件

$('#profile').html("<%= escape_javascript(render(:partial => 'profile')) %>");
于 2013-06-15T23:39:06.970 回答