新手问题 如何返回不同表单

jaynlive · 2016年01月22日 · 最后由 chenjau 回复于 2016年01月24日 · 2179 次阅读

在做一个考试系统,需要存储选择题和填空题。存储时填空题和选择题需要不同表单。我想使用 link_to 实现, 第一个创建动作是可以的,第二个创建动作该怎么办呢?

new_question_path(:xxx => yyy) 根据传入的参数渲染不同的页面,也可以新建一个 action

#1 楼 @w7938940 那他是怎么知道要调用哪个表单呢?

if params[:xxx] == '填空题'
  render '填空题'
else
  render '填空/简答'
end

不知道这种做法好不好。

#3 楼 @w7938940 我像这样子,但上面那个表单不知道如何调用_form2

在 new2 中渲染 from2 就可以了。不知道这样行不行

建议直接在客户端渲染

可以参考下 金数据,不知是不是要的行为。

#5 楼 @jaynlive

def new
  @question = Question.new
end

new.html.erb

<% if params[:type] %>
  <%= render partial: 'form'%>
<% else %>
  <%= render partial: 'form2'%>
<% end %>

@jaynlive

建议文件命名可以再加工下,抽象成更语义化的名称,若你就是希望根据类型来控制输出页面,那就设置成类型名称,如选择题的表单为:selections_form.html.erb 填空题的表单为:blanks_form.html.erb

这样在引导页面中就可以按 @w7938940 建议的那样设置统一的传参 path:new_question_path(:form_type => 'selections')new_question_path(:form_type => 'blanks')

在 action 里就能根据 :form_type 来判断输出页面了

<%= render :partial => "#{params[:form_type]}_form" %>

#10 楼 @ruby_xiaojie 不是,linux 下的,window 远程连接

作为两个模型分开来,不要夹杂在一起。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号