1

それらを構築するにはどうすればよいですか?オプションを作成するために、移行に列を追加しますか? コントローラー/モデルでアクション/メソッドを作成するだけですか?

私はこれについて非常に混乱しています(おそらく、一生懸命考えているだけで睡眠不足が原因です)。誰かが私を正しい方向に向けたり、リンク付きの素敵なリソースを提供してくれませんか.

選択メニューは Rails でどのように機能しますか??


詳細 + 例 既に表示する方法を知っています。私はそれらをどのように使用するかについて少し混乱しています。たとえば、選択メニューの「関係ステータス」{オプション = 独身、既婚、婚約} に 3 つのオプションがあるとします。これらに値を保持してアプリに情報を送信するにはどうすればよいですか? 独身者、既婚者、婚約者の移行を作成しますか? 次に、この情報をアプリに保存するにはどうすればよいですか? それらをブール値にしますか?

4

2 に答える 2

2

以下に、役立つリソースをいくつか示します。

  1. http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select
  2. http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag
  3. http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html

更新しました

わかりました、これを試してください:

<%= select_tag "favorite_color", '<option value="red">Red</option><option value="green">Green</option><option value="blue">Blue</option>'.html_safe %> 

コントローラー内のアクションにフォームを送信した後、 として取得できますparams

于 2013-06-10T05:56:11.123 に答える
1

選択メニューに静的オプションを渡したい場合は、それぞれのマークアップを渡すだけで、Rails に次のように補間させることができますhtml_safe

<%= select_tag 'Favorite Color', '<option>Blue</option><option>Red</option><option>Yellow</option>'.html_safe %>

編集:

色のオプションを動的でモデルベースにしたい場合は、おそらくいくつかの移行を作成する必要があります:

# in console
rails g model color user_id:integer name:string
rake db:migrate

# create some colors in the Rails console
rails console
Color.create(name: 'blue')
Color.create(name: 'red')
Color.create(name: 'yellow')

どのモデルに割り当てようとしているのかはわかりませんfavorite_colorが、それが のモデルであると仮定しましょうUser。ユーザーは好きな色を 1 つしか持てないため、has_one関係を設定します。

# app/models/user.rb
class User < ActiveRecord::Base
    has_one :color
end

# app/models/color.rb
class Color < ActiveRecord::Base
    belongs_to :user
end

コントローラーのアクションは次のようになります。

# app/controllers/users_controller.rb
class UsersController < ApplicationController
    def new
        @user = User.new
    end

    def create
        @user = User.new(params[:user])
        if @user.save
            # do something
        else 
            # do something else
        end
    end
end

最後に、ビューは次のようになります。

# app/views/users/new.html.erb
<%= form_for @user do |f| %>
    <!-- whatever other `user` inputs you have -->
    <%= f.collection_select :color, Color.all, :id, :name %>

    <%= f.submit 'Submit' %>
<% end %>
于 2013-06-10T06:35:08.010 に答える