1

我无法理解在使用 Ruby on Rails 时如何触发特定按钮事件。例如,我在表格中有一个迷你表单(MVC 的视图侧):

<%= form_tag do %>
<% if student.floor_pref == '1st' %>
    <td><%= select_tag 'room', options_for_select(@first_floor.map { |value| [value,value]}, @selected_room) %></td>
<% end %>
<% if student.floor_pref == '2nd' %>
    <td><%= select_tag 'room', options_for_select(@second_floor.map { |value| [value,value]}, @selected_room) %></td>
<% end %>
<% if student.floor_pref == '3rd' %>
    <td><%= select_tag 'room', options_for_select(@third_floor.map { |value| [value,value]}, @selected_room) %></td>
<% end %>

<td><%= submit_tag 'Update' %></td>
<% end %>

我如何告诉控制器,当在视图中单击更新按钮时,例如执行此代码:

a = Student.find(3)

a.room_number = '2105'
a.save
4

2 回答 2

2

您的按钮应该会触发对服务器的回发。您需要在控制器中定义一个动作,一个到达该动作的路由,并将您的表单action属性设置为该路由。然后,您的操作可以更新模型并以成功或错误消息进行响应。

于 2013-06-14T16:14:36.410 回答
2

你应该在表单标签中指定一个路由(数据将被提交到的控制器操作)。有关更多详细信息,请参阅http://apidock.com/rails/ActionView/Helpers/FormTagHelper/form_tag。考虑到您的操作是针对学生控制器的“编辑”操作,并且数据要发布到“更新”,视图可以定义为

<%= form_tag student_path(@student), :method => :put do %>
  ...
  <$= submit_tag 'Update' %>

在“更新”方法中,您可以编写代码以使用接收到的参数更新学生。我认为您需要研究基本的导轨功能,因为它将为您节省未来的时间。你可以参考http://guides.rubyonrails.org/getting_started.html另外,更喜欢使用 form_for 而不是 form_tag。

于 2013-06-18T16:20:57.860 回答