【发布时间】:2014-11-28 14:51:19
【问题描述】:
我正在尝试通过我的 ActionController 运行一个辅助方法,如下所示。
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
def set_count(object_count, class_name)
["new", "create"].include? action_name ? object_count = class_name.count + 1 : object_count = class_name.count
end
end
当我请求该控制器的新操作时,我收到错误“范围值错误”。
# app/views/subjects/new.html.erb
<%= form_for @subject do |f| %>
<table summary="Subject form field">
<tr>
<th><%= f.label :position %></th>
<td><%= f.select :position, 1..@subject_count %></td>
</tr>
</table>
<% end %>
请记住,如果我将它放在控制器本身中,此方法有效:
# app/controllers/subjects.rb
def set_count
["new", "create"].include? action_name ? @subject_count = Subject.count + 1 : @subject_count = Subject.count
end
按如下方式运行:
before_action :set_count, only: [:new, :create, :edit, :update]
我更愿意将它作为助手,因为其他几个控制器使用与此类似的东西。我尝试使用 to_i 将范围转换为 Fixnum,但我得到的只是一个没有数字的选择框。
【问题讨论】:
标签: ruby-on-rails ruby methods controller helper