Ruby on rails 向rails模型对象添加属性

Ruby on rails 向rails模型对象添加属性,ruby-on-rails,Ruby On Rails,我有一个模特学生。在studentsController中,我选择一组学生。我想在第一条和最后一条记录上附加一个标志 我将用如下部分显示学生列表:students/\u student,当用户单击每个学生时,他们将得到一个弹出窗口 我想使用这个标志来确定这个学生是否是第一个/最后一个,这样我就可以向url添加一个查询参数。例如,当您将鼠标悬停在第一个student:localhost:3000/student/1?location=first上时,url将如下所示 当显示分部时,集合不在分部中,

我有一个模特学生。在studentsController中,我选择一组学生。我想在第一条和最后一条记录上附加一个标志

我将用如下部分显示学生列表:students/\u student,当用户单击每个学生时,他们将得到一个弹出窗口

我想使用这个标志来确定这个学生是否是第一个/最后一个,这样我就可以向url添加一个查询参数。例如,当您将鼠标悬停在第一个student:localhost:3000/student/1?location=first上时,url将如下所示

当显示分部时,集合不在分部中,因此我不能只做这样的测试:student.first

有什么想法吗?多谢各位

[编辑]。这本来是对@neils的回复,但我想我应该把它放在那里:
它的工作,但我有另一个问题。因为我使用的是“自动滚动”功能,当用户向下滚动页面时,会加载更多的学生(一次3个),所以“第一个”和“最后一个”会添加到每行的第一个和第三个学生,而不是集合的实际第一个和最后一个。自动滚动的方式:我使用$.getScript请求index.js.erb文件。该文件呈现students/\u student如下:render@students,并附加到容器div。我呈现该模板中的url(students/\u student),因此参数每第一次/第三次呈现一次。

假设您已经将一些学生集合分配给@students(
Student.all
Student.where(某些条件)
,无论什么…)在控制器中,您可以执行以下操作:

attr\u访问者:标志添加到您的
Student
模型:

class Student < ActiveRecord::Base
  attr_accessor :flag
  #... rest of your code
end
然后在你的视图中使用这些信息。虽然不是很优雅,但应该可以做到这一点

编辑:对上述内容进行了详细阐述,以使其更加清晰。
EDIT2:修复了错误,
attr\u accessor
是正确的方法,而不是
attr\u accessable

假设您已经将一些学生集合分配给@Student(
Student.all
Student.where(某些条件)
,无论什么…),您可以在控制器中执行以下操作:

attr\u访问者:标志添加到您的
Student
模型:

class Student < ActiveRecord::Base
  attr_accessor :flag
  #... rest of your code
end
然后在你的视图中使用这些信息。虽然不是很优雅,但应该可以做到这一点

编辑:对上述内容进行了详细阐述,以使其更加清晰。
EDIT2:修复了错误,
attr\u accessor
是正确的方法,而不是
attr\u accessable

我不确定是否正确理解您的问题,但我将尝试一下

假设您使用
@students
作为列表的实例变量,您可以将学生列表传递给您的部分用户,如下所示:

<%= render 'students', :locals => {:students => @students} %>

我不确定我是否正确地理解了你的问题,但我想试试看

假设您使用
@students
作为列表的实例变量,您可以将学生列表传递给您的部分用户,如下所示:

<%= render 'students', :locals => {:students => @students} %>


如果你愿意,你可以继续你的
render@students
调用。只需注意,当你这样做时,你的部分中神奇地有了一个
student\u计数器
帮助器。现在,在你的部分中,你可以将
student\u计数器
@students.size
进行比较,并将你的
链接设置为
e> :location=>'first/last'
通过helper或decorator。

你可以继续你的
render@students
调用,如果你愿意的话。请注意,当你这样做的时候,你的部分中神奇地有一个
学生计数器
助手可供你使用。现在在部分中,你可以将
学生计数器
@学生们。调整大小
,并通过helper或decorator将您的
链接设置为
:location=>“first/last”

在url中传递参数[:location]时,为什么不使用params[:location]?请添加一些代码,以便轻松解决问题。@Sush我不确定我是否理解您的意思。我将使用params[:location]要获取它并确定它是第一项还是最后一项。我的问题是首先将位置参数附加到url。我需要确定何时附加它,因此我需要知道哪个项目是第一项,哪个项目是最后一项。@soundar我现在在做日常工作,所以我不能在以后粘贴任何代码。有什么问题吗你想让我解释什么?谢谢你的回答。好的。你是像render“student”那样渲染学生吗?:collection=>@students?在url中传递时为什么不使用params[:location]?请添加一些代码以便轻松解决问题。@Sush我不确定我是否理解你的意思。我将使用params[:location]要获取它并确定它是第一项还是最后一项。我的问题是首先将位置参数附加到url。我需要确定何时附加它,因此我需要知道哪个项目是第一项,哪个项目是最后一项。@soundar我现在在做日常工作,所以我不能在以后粘贴任何代码。有什么问题吗你想让我解释一下吗?谢谢你的回答。好的。你是像渲染“学生”那样渲染学生吗?:collection=>@students?niels你是怎么想的@students[0]内容?很好,它足够优雅。谢谢@neils!刚刚检查了这个,但这不起作用。@students上没有flag方法。@berto77,你必须为
flag
创建一个属性。你不能只是动态地分配它。经过一段时间的考虑,我认为我的解决方案,尽管它应该起作用,但违反了一些最佳实践:它在模型和控制器中引入了视图逻辑。因此,使用它的风险自负!:)niels你认为@students[0]的内容是什么?好吧,它足够优雅了。谢谢@neils!刚查过这个,