我有一个模型,我希望能够在表单中获取一个字段的用户输入,然后关闭弹出窗口。这可以通过更改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方法来处理表单。
答案 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中使用全局变量。使代码很难理解和调试。)