【发布时间】:2015-04-21 22:09:50
【问题描述】:
在我的用户显示视图中:
<%= form_tag assign_as_student_path do %>
<%= hidden_field_tag :user_id, @user.id %>
<%= submit_tag "Assign as a Student", data: { confirm: "Are you sure?" } %>
<% end %>
TeachersController(继承自 UsersController):
def assign_as_student
@user = User.find(params[:user_id])
@user.update_attributes(type: "Student")
@user.save
redirect_to admin_path, notice: "They are now a Student"
end
routes.rb:
post 'assign_as_student' => 'teachers#assign_as_student'
好的,这可行。但是……
这是我不得不接受的,因为我不知道如何将参数传递给控制器方法。
我想像上面那样在 UsersController 中编写一个方法,但使用这样的参数(我认为这可行,但无法对其进行测试):
def assign_as_type(type)
@user = User.find(params[:user_id])
@user.update_attributes(type: type)
@user.save
redirect_to admin_path, notice: "They are now a Student"
end
这样,我就可以只使用这种方法,而不是使用“assign_as_student”方法和“assign_as_teacher”方法。干爽总是好的。
所以...我认为上述方法可行,但我将如何从表单中传递参数?类似于下面的表格,但添加了一些可以传递字符串“Student”或“Teacher”的内容:
<%= form_tag assign_as_type_path do %>
<%= hidden_field_tag :user_id, @user.id %>
<%= submit_tag "Assign as a (Student/Teacher), data: { confirm: "Are you sure?" } %>
<% end %>
【问题讨论】:
标签: ruby-on-rails forms ruby-on-rails-4