【问题标题】:Passing params to new controller将参数传递给新控制器
【发布时间】:2015-07-01 09:30:39
【问题描述】:

我创建了一个简单的登录页面,用于在订阅模型中收集电子邮件地址。

在提交时,订阅被创建,用户被重定向到一个感谢页面,该页面路由到订阅/感谢。

我想将新创建的 id 传递给感谢页面,例如订阅/:id/thanks,这样我就可以访问新创建的感谢页面订阅。

【问题讨论】:

  • 显示你的 routes.rb.

标签: ruby-on-rails-4 params


【解决方案1】:

代码未测试

在路由文件中:

resources :subscriptions do
  member do
    get :thanks
  end
end

然后在控制器中创建一个方法来容纳感谢路由。

def thanks
  # thanks code will be here
end

在您的控制器中处理数据后将用户重定向到

redirect_to thanks_subscription_path(@YourSavedObject), notice: 'Some message'

就是这样。

PS:我不喜欢这种方法。解耦比折腾变量要好一点。太多重复了。

路由说明

我从这里学到了所有的路由:http://guides.rubyonrails.org/routing.htmlFantastic source。

干杯,祝你好运。

【讨论】:

    【解决方案2】:

    谢谢H先生!

    这是我所做的,似乎效果很好。我不太了解路由,所以任何 cmets 表示赞赏:

    在路线中:

      resources :subscriptions
    

    get 'subscriptions/:id/thanks' => 'subscriptions#thanks', as: 'thanks'

    订阅控制器:

    def thanks
        @invite = Invite.new
        @subscription = Subscription.find(params[:id])
      end
    

    创建动作

    if @subscription.save
            format.html { redirect_to thanks_path(@subscription), notice: 'Subscription was successfully created.' }
            format.json { render :show, status: :created, location: @subscription }
          else
    

    【讨论】:

    • 您的thanks 方法在订阅控制器中,这就是我使用member 作为路由块的原因。
    猜你喜欢
    • 2018-07-14
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多