我如何构建它们? 我是否在迁移中添加列以进行选项? 我只是在我的控制器/模型中创建动作/方法吗?
我对此非常困惑(也许是因为睡眠不足只是想要努力)。有人能指出我正确的方向或提供一些很好的资源与链接。
如何在Rails中选择菜单?
更多信息+示例 我知道如何让它们显示出来。我对如何使用它们感到有些困惑。举个例子,假设我的选择菜单中有3个选项“关系状态”{options = single,married,engaged}。我如何才能获得这些价值&发送信息到我的应用程序? 我是否为单身,已婚,和...创建迁移?订婚?那我怎样才能将这些信息存储在我的应用程序中?我让它们成为布尔人吗?
答案 0 :(得分:2)
以下是一些资源可以帮助您:
<强>更新强>
好的,试试这个:
<%= select_tag "favorite_color", '<option value="red">Red</option><option value="green">Green</option><option value="blue">Blue</option>'.html_safe %>
将表单提交到控制器内的操作后,您可以将其设为params
。
答案 1 :(得分: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
的模型。由于用户只能拥有一种喜欢的颜色,因此您将设置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 %>