所以,我有一个带有一些学生网格的索引页面。只需一个按钮,我就可以通过电子邮件方式向@students = Student.all
如何调用方法?
该方法的参数是@students,是不是?
<%= link_to 'Email', send_to_student_path(@students) %>
正如我所见here
StudentController.rb
def send_to_student()
#binding.pry
@students.each do |student|
StudentMailer.email_recall(student).deliver
end
end
和梅勒:
class StudentMailer < ActionMailer::Base
def email_recall(student)
@url = 'http://example.com/login'
mail(to: @student.email,
from: current_user.email,
subject: 'Valid your datas')
end
end
在routes.rb中我有:
resources :students do
member do
post :send_to_student
end
end
第一个问题: 如何从方法参数中的@students = Student.all传递每个学生的id?
第二个问题:
如何以正确的方式调用send_to_student
方法?
非常感谢提前
尼古拉斯
答案 0 :(得分:0)
1)您使用它的方式,您将通过路径传递ID,例如:students/:id/send
- 您可以阅读有关member routing on the Rails documentation的更多信息。这将设置params[:id]
的参数,您可以在操作中使用
或者,如果您要向所有学生发送消息,您可以使用我在下面创建的控制器功能:
2)我认为你通常可以使用Model Method。这是您在模型中放置功能,清理控制器的地方
我不知道它是否适用于邮件程序,但我会尝试这个:
#app/controllers/students_controller.rb
def index
@students = Student.all
Student.send_to_students(@students)
end
#app/models/student.rb
def self.send_to_student(students)
students ||= self.all # -> not sure about the self.all call
students.each do |student|
StudentMailer.email_recall(student).deliver
end
end