Ruby on Rails如何使用提交按钮和单选按钮

时间:2015-03-18 02:20:40

标签: ruby-on-rails ruby button submit radio

对于我的最终项目,我需要创建两个带有提交按钮的单选按钮,该按钮将显示我所有课程和我专业课程的GPA。我可以轻松地显示它们,但是当我需要使用单选按钮只显示一个

时,它会卡住



<h2>Please select which GPA you would like to view:</h2>

<%= form_tag("/trans/transcript", :method => "get") do %>
<table>
  <tr>
    
	<th>Major Credits</th>
	<th>All Credits</th>
  </tr>
  <tr>
    
	<td><%= radio_button_tag(:gpa, "Major") %></td>
	<td><%= radio_button_tag(:gpa, "All") %> </td>
  </tr>
  
  
</table>
  <%= submit_tag("View GPA") %>
<% end %>



<p> Major credits GPA  <%= @transcript.GPA_for_major %>
<p> All credits GPA  <%= @transcript.GPA_for_non_major %>
&#13;
&#13;
&#13;

一切看起来都不错,但我不知道如何设置控制器来说明他是否点击了主要的gpa单选按钮并点击了#34;查看GPA&#34;这&lt;%= @ transcript.GPA_for_major%&gt;应该显示

1 个答案:

答案 0 :(得分:0)

简短回答

  • 在TransController的成绩单操作
  • 中创建一个实例变量@gpa
  • 在成绩单操作中,检查参数[:gpa]
    • 设置@gpa&amp; @transcript为nil if params [:gpa] .nil?
    • 如果params [:gpa]不是nil,则将@gpa设置为params [:gpa]和@transcript
  • 在视图/ trans / transcript.html.erb中
    • 如果@gpa为nil,则不显示任何内容
    • 如果@gpa ==&#34; Major&#34; show @ transcript.GPA_for_major
    • 如果@gpa ==&#34;全部&#34; show @ transcript.GPA_for_non_major

LONG ANSWER

假设控制器是trans并且动作是transcript,那么你应该在TransController中做什么

class TransController < ApplicationController

  def transcript
    if params[:gpa].nil?
      @transcript = @gpa = nil
    else
      @gpa = params[:gpa]
      @transcript = ... # Find your transcript here
    end
  end
  # ... other actions
  # ... other actions
  # ... other actions
end

以下是trans / transcript.html.erb视图的外观 -

<h2>Please select which GPA you would like to view:</h2>
<%= form_tag('trans/transcript', :method => "get") do %>
  <table>
    <tr>
      <th>Major Credits</th>
      <th>All Credits</th>
    </tr>
    <tr>
      <td>Major<%= radio_button_tag(:gpa, "Major") %></td>
      <td>All<%= radio_button_tag(:gpa, "All") %> </td>
    </tr>
  </table>
  <%= submit_tag("View GPA") %>
<% end %>

<% if @gpa == "Major" %>
  <%= @transcript.GPA_for_major %>
<% elsif @gpa == "All" %>
  <%= @transcript.GPA_for_major %>
<% end %>