Ruby on rails 表单选项是单选按钮还是常规按钮?

Ruby on rails 表单选项是单选按钮还是常规按钮?,ruby-on-rails,forms,Ruby On Rails,Forms,我对Rails非常陌生,只做了一些教程,而且我没有web开发方面的背景,所以请提前道歉 我正在创建一个非常简单的应用程序,允许用户从三个可用状态更新中选择一个。我应该将这三个状态更新存储为字符串还是整数?目前,我的Postgres数据库将状态存储为整数,尽管我也很好奇是否有办法指定只能插入数字1、2或3 第二个问题:我想显示一个表单,它显示为三个按钮,每个按钮对应一个特定的、设置状态更新。我希望按钮显示时,里面有一个字符串,这样就可以让人阅读,但状态更新对应于1、2或3。用户可以选择哪种状态,如

我对Rails非常陌生,只做了一些教程,而且我没有web开发方面的背景,所以请提前道歉

我正在创建一个非常简单的应用程序,允许用户从三个可用状态更新中选择一个。我应该将这三个状态更新存储为字符串还是整数?目前,我的Postgres数据库将状态存储为整数,尽管我也很好奇是否有办法指定只能插入数字1、2或3

第二个问题:我想显示一个表单,它显示为三个按钮,每个按钮对应一个特定的、设置状态更新。我希望按钮显示时,里面有一个字符串,这样就可以让人阅读,但状态更新对应于1、2或3。用户可以选择哪种状态,如果在提交前改变主意,可以更改他们选择的状态,然后在决定后点击提交按钮

我应该使用单选按钮来完成这项任务吗?如果是这样,我应该如何使单选按钮显示文本,然后保存为整数?还是我应该用普通的按钮

非常感谢

更新:

由于@Bot,我能够创建一个散列,将人类可读的值定义为相应的状态整数,如下所示:

config/application.rb:

module MyAppName
   class Application < Rails::Application

   INDENT_STATUSES = {1 => "DUE", 2 => "SHIPPING", 3 => "SHIPPED", 4 => "CLOSED"}.freeze 
   end
end
模块MyAppName
类应用程序“到期”,2=>“发货”,3=>“已发货”,4=>“已关闭”}。冻结
结束
结束
和_form.html.erb:

<%= simple_form_for(@status) do |f| %>
    <%= f.error_notification %>

    <div class="form-inputs">
    <%= f.input :status , :as => :radio_buttons ,:collection => MyAppName::Application::INDENT_STATUSES.keys, :label_method => lambda { |k| MyAppName::Application::INDENT_STATUSES[k]}, :item_wrapper_class => 'inline', :include_blank => false %> 
    </div>

    <div class="form-actions">
    <%= f.button :submit %>
    </div>
<% end %>

:单选按钮,:collection=>MyAppName::Application::INDENT_STATUSES.keys,:label_method=>lambda{k | MyAppName::Application::INDENT_STATUSES[k]},:item_wrapper_class=>inline',:include_blank=>false%>
但是,在index.html.erb中,状态显示为数字,而不是人类可读的版本:

<h1>Listing statuses</h1>

<table>
<tr>
<th>Status</th>
<th></th>
<th></th>
<th></th>
</tr>

<% @statuses.each do |status| %>
<tr>
    <td><%= status.status %></td>
    <td><%= link_to 'Show', status %></td>
    <td><%= link_to 'Edit', edit_status_path(status) %></td>
    <td><%= link_to 'Destroy', status, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</table>

<br />

<%= link_to 'New Status', new_status_path %>
列出状态
地位

如何获取
status.status
以显示我创建的哈希的可读值


我使用脚手架来构建我的状态,因此状态控制器是您所期望的。

要在rails应用程序中具有基于键值对的字段,您需要首先定义包含这些对的哈希。如果它在整个应用程序中保持不变,可以使用config/application.rb文件来定义它

module MyAppName
  class Application < Rails::Application
     INDENT_STATUSES = {1 => "DUE", 2 => "SHIPPING", 3 => "SHIPPED", 4 => "CLOSED"}.freeze 
  end
end    
您可以在视图中直接使用它

<td><%= MyAppName::Application::INDENT_STATUSES[status.status.to_i] %></td>
从长远来看,像这样使用它

<td><%= status.status_label %></td>


请在此处输入您尝试过的代码,以便准确回答您的问题。很好,@Bot,确实有效!我得花点时间才能弄明白。然后,我将如何在列出我的状态的索引页上显示状态的可读形式?”status.status'只显示数字-如何将其指向我定义的哈希?
<td><%= MyAppName::Application::INDENT_STATUSES[status.status.to_i] %></td>
class Status

  #
  # 
  def status_label
    MyAppName::Application::INDENT_STATUSES[self.status.to_i]
  end
end   
<td><%= status.status_label %></td>