根据视图中传递的参数重定向路径

Re-directing path based on params passed in views

我的 index.html.haml 中有以下两个按钮:

= button_to t('payer_contracts.new_global_payer_contract'), new_payer_contract_path, {:class => 'btn pull-left', :method => 'get'}
= link_to t('payer_contracts.new_bpci_payer_contract'), new_payer_contract_path

如您所见,他们都去了 new_payer_contract_path。我怎样才能做到,如果单击第一个按钮,我可以发送一个参数,例如 new_payer_contract_path(new_global_payer_contract) ?

问题是:在我的 new.html.haml 中,它们都在渲染“global_form”。我希望第一个按钮呈现 global_form,第二个按钮呈现 'bpci_form'

这里是 new.html.haml:

- content_for(:title, t('payer_contracts.page_titles.new'))

- content_for :article do
  .common-main-container
    %h1= t('payer_contracts.new_payer_contract')
    = render 'global_form'

在我的 payer_contracts_controller 中,到目前为止我有这个:

def new

    @payer_contract = PayerContract.new(
         id: '',
         contract_name: '',
         contract_type: {
             id: '',
             code_key: '',
             display: '',
             code_group: ''
    },
         amount: '',
         stoploss_amount: '',
         stoploss_reimbursement_percentage: '',
         begin_date: '',
         end_date: '',
         timely_filing_days: '',
         payer: ''
    )
 end 

使用 button_to,您可以传递一个 params 散列:

<%= button_to t('payer_contracts.new_global_payer_contract'), new_payer_contract_path, class: 'btn pull-left', method: :get, params: { x: "y" } %>

这会在 button_to 创建的表单中创建一个 hidden_field,允许您将 params[:x] 传递给您的下一个操作。


更新

根据您的评论,您将在控制器中获取 params[:x] 变量。

您只需在 ActiveRecord 查询调用中使用它:

#view
-if params["x"] == "y"
  = render "global_form"
-else
  = render "bpci_form"