如何处理rails中的备用create方法

时间:2016-08-30 18:35:31

标签: ruby-on-rails

我有一个模型,我希望能够在表单中获取一个字段的用户输入,然后关闭弹出窗口。这可以通过更改create controller中的respond_to来完成。但是,我有一个相同的创建控制器的另一种形式,我想要默认处理。

即。正常的respond_to格式是

   format.html { redirect_to @pre_production_meeting, notice: 'Pre Production Meeting was successfully created.' }
   format.json { render :show, status: :created, location: @pre_production_meeting }

我想要弹出窗体的替换是

 format.html { redirect_to controller: 'shared', action: 'window_closer', notice: 'attachment was successfully updated.' }
 format.json { render :show, status: :ok, location: @pre_production_meeting }

我知道我可以这样做的一种方法是设置一个变量,然后选择正确的响应,例如

if $form = '1' then 
   (first format option)
else if $form = '2' then 
   (second format option)
end

这是最好的方法吗?还是有办法创建另一个def,其功能类似于创建def但具有修改后的格式?如果是这样,我无法弄清楚如何使用create2方法来处理表单。

1 个答案:

答案 0 :(得分:1)

我看到两种方法:1。为这个不同的逻辑创建一个新动作,或者2.在查询字符串中传入一个值。

如果您将值传入查询字符串,则可以使用if语句。

if params[:form] == '1'
  format.html { redirect_to @pre_production_meeting, notice: 'Pre Production Meeting was successfully created.' }
else
  format.html { redirect_to controller: 'shared', action: 'window_closer', notice: 'attachment was successfully updated.' }
end

(注意:你在问题中使用$form作为变量。由于你用$作为前缀,它是一个全局变量。你几乎不想在Ruby中使用全局变量。使代码很难理解和调试。)