Rails - 如何从视图中访问传递给控制器​​的变量?

时间:2013-05-02 04:39:04

标签: ruby-on-rails ruby-on-rails-3 model-view-controller

我认为这是:

<% @users.each do |user| %>
  <% if user.teacher == current_user.teacher || current_user.role == "admin" %>
  <tr>
    <td><%= user.username %></td>
    <td><%= user.email %></td>
    <td><%= user.teacher %></td>
    <td><%= user.role %></td>
    <td><%= user.admin %></td>
    <td><%= link_to 'Problems', student_problems_path(user) %></td>
    <td><%= link_to 'Edit', edit_user_path(user) %></td>
    <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
  <% end %>
<% end %>

因此,我将user作为参数传递给student_problems_path。在我的UsersController我有:

def student_problems
    @problems = Problem.all
    @user = user.email
end

但是,Rails告诉我以下内容:

undefined local variable or method `user' for #<UsersController:0x3d79208

如何从视图中访问传递给user的{​​{1}}变量?谢谢!

修改

以下是我的路线:

UsersController

2 个答案:

答案 0 :(得分:0)

执行以下操作:

# pass the following to your helper:
student_problems_path(user_email: user.email)

# now the URL will be /student_problems?user_email=user@gmail.com
# and in the controller do:

def student_problems
  @user = params[:user_email]
  @problems = Problem.all
end

答案 1 :(得分:0)

不知道问题的详细信息,但如果您想在student_problems操作中获取用户的ID,那么您可以使用以下代码:

@user_id = params[:id]

如果您想要更多解决方案,请使用代码指定问题详细信息。感谢