链接无法正确传递ID

时间:2015-05-11 19:24:31

标签: ruby-on-rails ruby ruby-on-rails-4 routing

在视图中,我包含了链接:

<%= link_to("Upgrade account", upgrade_path(@organization)) %>

此链接存在于标准“展示”视图/页面上。所以访问者已经开启了例如http://localhost/organizations/123,其中123是@ organization.id。所以定义了@organization。

在控制器中我有:

  def upgrade
    @organization = Organization.find(params[:id])   # This is the line that doesn't work
    @actioncode = Actioncode.new
    @amount = DEFAULT_PRICE
    @currency = "EUR"
    @description = @organization.id
    @transaction_description = "MyDescription"
    @transaction_type = "S"
    @hash = hash(@description, @amount, @currency, @transaction_type)
    render 'checkout'
  end

但是,当我在show视图中单击开发中的链接时,我收到以下错误消息。

No route matches [GET] "/signup/upgrade.123"

有没有人知道出了什么问题?你会期望'升级/ 123',但如果我手动将浏览器地址栏中的地址更改为'upgrade / 123',我也会得到相同的结果。

在我的路线中:

  post 'signup/upgrade'     => 'organizations#upgrade',     as: 'upgrade'
  get 'signup/organization' => 'organizations#new',         as: 'register'
  get 'signup/register'     => 'organizations#new_premium', as: 'register_premium'
  post 'signup/register'    => 'organizations#checkout',    as: 'signup_checkout'
  get 'signup/confirmation' => 'organizations#confirmation'

2 个答案:

答案 0 :(得分:1)

尝试更新您的路线

post 'signup/upgrade/:id'

您无法在浏览器的地址栏中测试此网址,因为这会提交GET而不是POST

答案 1 :(得分:0)

您有post的路线,并且您正尝试使用get获取网址。

btw:使用rake routes查看您的路线