Ruby on Rails 4.1
我正在使用具有枚举角色的Devise.它在创建用户时当前设置了defualt角色.我想在表单中添加一个字段,用于创建用户以设置枚举角色.
我读过这篇文章,但没有说明如何利用新角色.
这是User类
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
enum role: [:user, :vip, :admin, :developer, :marketing, :support, :translator]
after_initialize :set_default_role, :if => :new_record?
def set_default_role
self.role ||= :user
end
Run Code Online (Sandbox Code Playgroud)
这是我尝试选择一个枚举角色的表单的一部分:
<div class="form-group">
<%= f.collection_select :role, User.roles, :id, :enum, {prompt: "Select a role"}, {class: "form-control input-lg"} %>
</div>
Run Code Online (Sandbox Code Playgroud)
错误:
NoMethodError - undefined method `enum' for ["user", 0]:Array:
actionview (4.1.1) lib/action_view/helpers/form_options_helper.rb:761:in `value_for_collection'
Run Code Online (Sandbox Code Playgroud)
我之前从未使用过enum,文档也没有证明是有帮助的.如何显示枚举选项?
我有一个创建新用户的表单.我正在尝试添加下拉选项以选择权限级别.我希望能够为每个用户选择多个权限级别.
这是我的看法,我补充说{:multiple => true}:
<%= f.label :permission, "Permission Level" %>
<%= f.select :permission, [ ["Read Only", "read"], ["IP Voice Telephony", "ip_voice"], ["IP Video Telephony", "ip_video_telephony"], ["Enterprise Gateways", "enterprise_gateways"], ["Consumer ATAs", "consumer_atas"], ["IP PBX", "ip_pbx"], ["Master of All", "all"] ], {prompt: "Select Permission Level"}, {:multiple => true}, class: "input-lg" %>
Run Code Online (Sandbox Code Playgroud)
我的控制器,我补充说:permission => []:
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation, :admin, :permission => [])
end
Run Code Online (Sandbox Code Playgroud)
我为我的观点得到的错误,f.选择:
wrong number of arguments (5 for 2..4)
Run Code Online (Sandbox Code Playgroud)
你如何为Rails 4制作一个选择倍数?
这是我的ArrayList的内容 contain
HPDH-1,001, Check-out date: 7/7/7
JTI-1,001, Check-out date: 7/7/7
Run Code Online (Sandbox Code Playgroud)
我的代码:
for (int i = 0; i < contain.size(); i++) {
if (contain.get(i).contains(code)) {
System.out.println(contain.get(i));
}
}
Run Code Online (Sandbox Code Playgroud)
事情是我的变量代码是字符串"JTI-1"为什么不给它JTI-1输出?我试图让它显示变量代码的值.我想删除contains.get(i),如果它只是给我输入的那个.
有没有一种方法可以让一个页面拥有多个 URL ?
我有:
---
slug: /foo
---
Run Code Online (Sandbox Code Playgroud)
我希望页面加载时使用/foo或/bar。
我想我可以用另一个文件制作另一个文件并让它模仿内容......但希望有另一种方法。
我的Ruby on Rails 3控制器有一个简单的If Else语句似乎不起作用.
我的发言:
def create
if @trained = Certificate.where(user_id: params[:certificate][:user_id])
@trained.first.update_attributes(attend: "Yes")
else
@trained = Certificate.new(params[:certificate])
if @trained.save
@trained.update_attributes(attend: "Yes")
end
end
redirect_to grandstreamers_resellers_path
end
Run Code Online (Sandbox Code Playgroud)
这是带有错误的日志,'update_attributes'的NoMethodError,但是这行不应该运行,因为它找不到带有user_id'1'的证书.为什么不做else语句呢?
Started POST "/certificates" for 50.241.102.234 at 2014-01-06 07:01:55 -0800
Processing by CertificatesController#create as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"TM6GPqslIs013O+mOuxGXyyD90T2O5lSZmnqKTFPwVw=", "certificate"=>{"user_id"=>"1"}, "commit"=>"Train"}
Certificate Load (0.1ms) SELECT `certificates`.* FROM `certificates` WHERE `certificates`.`user_id` = 1 LIMIT 1
Completed 500 Internal Server Error in 1ms
NoMethodError (undefined method `update_attributes' for nil:NilClass):
app/controllers/certificates_controller.rb:5:in `create'
Run Code Online (Sandbox Code Playgroud) 我试图让我的表单为文本字段分配值。我有一个定义 current_user 的帮助文件。我希望 text_field :name 是 current_user.name。
<%= form_for @message, :url => contact_path do |form| %>
<%= form.text_field :name = current_user.name %>
<%= form.text_field :email = current_user.email %>
...
Run Code Online (Sandbox Code Playgroud)
我试过#{name},params,你如何分配这个值?
Ruby on Rails 4.
我安装gem 'country_select', '~> 1.3.1'并让下拉工作有点奇怪.我找不到有关向该字段添加样式类的文档.
我需要在JS中使用的id,我试图在字段中使用Bootstrap类.任何下拉类都会很好:
<%= f.label :ship_country, "Country:" %><br>
<%= f.country_select :ship_country, {class: "dropdown", :id => "payment_ship_country"} %>
Run Code Online (Sandbox Code Playgroud)
这显示了一个丑陋的默认选择类,它还添加了"class"和"id"作为选择选项,因此语法明显偏离.有任何想法吗?
在Rails 3.2控制台中,我尝试将多个记录更新为相同的值.
例如:
h=Person.find_all_by_company_country("Alabama")
Run Code Online (Sandbox Code Playgroud)
现在我想将company_country改为"Texas"
例如:
h.update_attributes(company_country: "Texas")
NoMethodError: undefined method `update_attributes' for #<Array:0x00000003b01d70>
Run Code Online (Sandbox Code Playgroud)
有什么选择呢?
我正在学习Ruby并且有简单的If,Elsif,Else语句.别的总是运行.我已经阅读了几个例子,并没有看到我做错了什么.
if ip_voice.any?{ |o| @filter =~ /\b#{Regexp.escape(o)}\b/ }
@catagory = "ip_voice"
elsif ip_pbx.any?{ |o| @filter =~ /\b#{Regexp.escape(o)}\b/ }
@catagory = "ip_pbx"
elsif ip_video_surveillance.any?{ |o| @filter =~ /\b#{Regexp.escape(o)}\b/ }
@catagory = "ip_video_surveillance"
elsif ip_video_telephony.any?{ |o| @filter =~ /\b#{Regexp.escape(o)}\b/ }
@catagory = "ip_video_telephony"
elsif enterprise_gateways.any?{ |o| @filter =~ /\b#{Regexp.escape(o)}\b/ }
@catagory = "enterprise_gateways"
else consumer_atas.any?{ |o| @filter =~ /\b#{Regexp.escape(o)}\b/ }
@catagory = "consumer_atas"
...run code...
end
Run Code Online (Sandbox Code Playgroud)
我已经按照不同的顺序移动了这些语句,代码总是运行良好,只是总是使用else语句.我错过了什么吗?谢谢
ruby ×4
arraylist ×1
devise ×1
docusaurus ×1
enums ×1
for-loop ×1
if-statement ×1
java ×1
railsapps ×1