小编DDD*_*DDD的帖子

从表单中选择枚举以设置角色

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,文档也没有证明是有帮助的.如何显示枚举选项?

enums ruby-on-rails devise ruby-on-rails-4 railsapps

14
推荐指数
3
解决办法
2万
查看次数

Ruby on Rails 4选择多个

我有一个创建新用户的表单.我正在尝试添加下拉选项以选择权限级别.我希望能够为每个用户选择多个权限级别.

这是我的看法,我补充说{: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制作一个选择倍数?

ruby ruby-on-rails ruby-on-rails-4

9
推荐指数
2
解决办法
2万
查看次数

带有ArrayList的Java for循环

这是我的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),如果它只是给我输入的那个.

java for-loop arraylist

7
推荐指数
2
解决办法
7万
查看次数

一页有多个 URL

有没有一种方法可以让一个页面拥有多个 URL ?

我有:

---
slug: /foo
---
Run Code Online (Sandbox Code Playgroud)

我希望页面加载时使用/foo/bar

我想我可以用另一个文件制作另一个文件并让它模仿内容......但希望有另一种方法。

docusaurus

5
推荐指数
0
解决办法
273
查看次数

Ruby on Rails忽略了If Else语句

我的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)

ruby if-statement ruby-on-rails ruby-on-rails-3

3
推荐指数
1
解决办法
691
查看次数

从变量赋值的表格

我试图让我的表单为文本字段分配值。我有一个定义 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 ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
1525
查看次数

将样式类添加到select_country字段

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"作为选择选项,因此语法明显偏离.有任何想法吗?

ruby-on-rails twitter-bootstrap ruby-on-rails-4

2
推荐指数
1
解决办法
1281
查看次数

Rails 3 update_attributes用于数组

在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-on-rails ruby-on-rails-3

1
推荐指数
1
解决办法
3397
查看次数

如果,elsif,否则行为

我正在学习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

0
推荐指数
1
解决办法
123
查看次数