【问题标题】:Rails run :get route within /new and /edit _formRails 运行:在 /new 和 /edit _form 中获取路线
【发布时间】:2017-03-22 14:03:33
【问题描述】:

我有一个_form 用于newedit 用于@Giveaway 对象。在这个表格中,我有一个随机获胜者的字段。

我想通过使用<%= button_to "Randomly Pick Winner!", {:action => 'choose_winner'}, :method => :get %> 调用方法giveaways#random_winner 来填充此字段,但在加载/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

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

【问题讨论】:

    标签: ruby-on-rails rest routes render


    【解决方案1】:

    你的 routes.rb 很接近

    resources :giveaways do 
      member do
        get :choose_winner
      end
    end
    

    然后我会使用 Rails 路由助手,这样您就不必担心自己设置动作/控制器。

    <%= button_to "Randomly Pick Winner", choose_winner_giveaway_path(@giveaway), method: :get %>

    【讨论】:

    • 谢谢。我担心的是新方法还没有对象ID。
    • 您可以将其设为收集路线并将 ID 作为参数传递。然后分别处理这两种情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多