0
我有一个控制器,按照对象的基础上的数字位置顺序:设置一个before_action基于的方法中的条件语句
<%= form_for @subject do |f| %>
<p><%= f.label :position %></p>
<p><%= f.select :position, [email protected]_count %></p>
<% end %>
据推测,如果有人想创建一个新的课题,一个额外的数字位置将被添加到选择框中。例如,如果有5个主题并且有人想要添加另一个主题,则会有6个职位可供选择。
这是我目前如何设置我的控制器。
def new
@subject = Subject.new
@subject_count = Subject.count + 1
end
def create
@subject = Subject.new(subject_params)
@subject_count = Subject.count + 1
end
def edit
@subject_count = Subject.count
end
def update
@subject_count = Subject.count
...
end
private
def subject_params
params.require(:subject).permit(:name, :position, :visible)
end
def set_subject
@subject = Subject.find(params[:id])
@subject_count = Subject.count
end
我想用before_action会在一个方法只对新增加1到Subject.count
和创建操作,以保持该代码DRY。有没有办法设置一个条件,我可以做到这一点?这是我脑子里想的:
def_set_subject_count
# if new || create actions are requested
# @subject_count = Subject.count + 1
# elseif edit || update actions are requested
# @subject_count = Subject.count
# end
end