我的routes.rb文件中有这个
checkboxes = request.getParameterValues("c1");
days = request.getParameterValues("t1");
int i = 0;
if(checkboxes!=null){
for (String title : checkboxes) {
if(title.equals("on")){
// your code
}
}
当我运行rake路线时,它会给出
resources :votes
edit_vote GET /votes/:id/edit(.:format)vote#edit 投票GET /votes/:id(.:format)投票#show
我的问题是如何在没有任何参数的情况下调用我的“/ show”方法?如果有人不提供ID,我想使用此控制器方法生成随机结果
votes GET /votes(.:format) votes#index
POST /votes(.:format) votes#create
new_vote GET /votes/new(.:format) votes#new
但是现在当我在浏览器中键入“/ votes”时,它会因错误
而消失 def show
id = params[:id]
# If there is no person selected based on the param, choose one randomly
if !id.present?
if current_user
@person = Person.joins("LEFT JOIN users ON users.id = people.user_id")
.where("people.user_id IS NULL")
.order("RANDOM()").limit(1).first
end
if @person.nil?
@person = Person.order("RANDOM()").limit(1).first
end
else
@person = Person.find_by_id(id)
if current_user
@vote = Vote.where(person_id: id, user_id: current_user.id).first || Vote.new
end
end
end
答案 0 :(得分:0)
至少在使用resources
- resources
时,您不能生成符合RESTful实践的标准路线组。在您的情况下,它正在生成get '/votes/:id', to: 'votes#show'
因为没有匹配的参数,所以它假定您尝试转到votes#index
如果你想匹配两者,我会在你的routes.rb
中执行类似的操作:get '/votes(/:id)', to: 'votes#show'
parens表示一个可选的参数。您可能需要在resources
阻止之前添加此内容,或更改resources
阻止以忽略show
操作。
有关params的更多信息:http://guides.rubyonrails.org/v5.1.1/routing.html#bound-parameters