2017-03-22 35 views
0

我有_form对于newedit对于@Giveaway对象。在这个表格中,我有一个随机赢家的领域。Rails运行:在/ new和/ edit中创建路由_form

我想通过调用方法giveaways#random_winner<%= button_to "Randomly Pick Winner!", {:action => 'choose_winner'}, :method => :get %>填充此字段,但在加载/giveaways/new时出现此错误No route matches {:action=>"choose_winner", :controller=>"giveaways"}

这里是我的控制器:

def choose_winner 
    random_winner = SubscriberUser.where(user_id: current_user.id).pluck(:subscriber_id).sample(1) 
    session[:random_winner] = random_winner 
    redirect_to :back 
    end 

这里是我试过的路由。我不是在非脚手架路线很好吗:

resources :giveaways do 
    member do   
     get 'choose_winner' => 'giveaways#choose_winner' 
     #tried get :choose_winner, as: :choose_winner 
     #tried get 'new/choose_winner' 
     #tried get 'choose_winner' 
     #tried get 'choose_winner', to: 'giveaways#choose_winner', as: 'choose_winner' 
    end 
    end 

问题 - 当我已经定义在路由控制器和动作为什么不加载页面?当我运行该路线时,是否需要重新加载页面?有没有更好的方法来获取这些数据?

回答

1

你的routes.rb接近

resources :giveaways do 
    member do 
    get :choose_winner 
    end 
end 

然后我会用Rails的路线帮手,所以你不必担心设置的动作/控制自己。

​​

+0

谢谢。我担心的是新方法还没有对象标识。 – HashRocketSyntax

+0

您可以将其设置为收集路线并将ID作为参数传递。然后分别处理这两种情况 – Jared