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

时间:2016-02-04 16:13:40

标签: ruby-on-rails ruby haml

我的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 

1 个答案:

答案 0 :(得分:1)

使用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" } %>

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

<强>更新

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

您只需在ActiveRecord查询电话中使用此功能:

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