0

私は Rails を初めて使用し、いくつかのチュートリアルを行っています。また、Web 開発のバックグラウンドがないため、事前にお詫び申し上げます。

ユーザーが利用可能な 3 つのステータス更新のいずれかを選択できるようにする、非常に単純なアプリを作成しています。これら 3 つのステータス更新を文字列または整数として保存する必要がありますか? 現在、私の Postgres データベースはステータスを整数として保存していますが、1、2、または 3 の数字のみを挿入できるように指定できる方法があるかどうかも知りたいです。

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

そして _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 %>

ただし、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作成したハッシュの人間が読める値を表示するにはどうすればよいですか?

ステータスを構築するために足場を使用したので、ステータス コントローラーは期待どおりのものです。

4

1 に答える 1

0

Rails アプリでキーと値のペア ベースのフィールドを使用するには、最初にそれらのペアを含むハッシュを定義する必要があります。アプリケーション全体で一定にする場合は、 config/application.rb ファイルを使用して定義できます。

module MyAppName
  class Application < Rails::Application
     INDENT_STATUSES = {1 => "DUE", 2 => "SHIPPING", 3 => "SHIPPED", 4 => "CLOSED"}.freeze 
  end
end    

次に、 simple_formを使用している場合、フォームで次のようなことができます。

    <%= 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 %>    

また、application.rb ファイルに何かを追加した後は、サーバーを再起動することを忘れないでください。それが役に立てば幸い。

アップデート

ショーページにステータスを表示するには、ハッシュからステータスキーに対応する値を取得する必要があります。

 MyAppName::Application::INDENT_STATUSES[indent.status.to_i]

ビューで直接使用できます。

<td><%= MyAppName::Application::INDENT_STATUSES[status.status.to_i] %></td>

または、Model でメソッドを定義することもできます。

class Status

  #
  # 
  def status_label
    MyAppName::Application::INDENT_STATUSES[self.status.to_i]
  end
end   

ビューでは、このように使用します。

<td><%= status.status_label %></td>
于 2013-08-23T20:31:55.380 に答える