代码之家  ›  专栏  ›  技术社区  ›  Rubioli

Rails 4-在新动作中呈现不同形式的片段新建.js.erb

  •  0
  • Rubioli  · 技术社区  · 7 年前

    在我的申请表中,我有一个 Post 模型。用户在添加帖子时,可以选择4种不同类型的帖子。基本上,每个 类型 表单中有不同的字段。

    *例如: 类型2 类型3 类型4 所有字段都处于活动状态。

    当前,当用户单击 添加新帖子 ,他们需要选择一个职位类型 (来自引导模式) 我加了一个 param type 此链接将添加到:

    = f.hidden_field :post_type, value: params[:type]
    

    posts#new 我有:

    - if params[:type].present?
      - if params[:type].to_i == 1
        = render 'posts/form_partials/only_image'
      - elsif params[:type].to_i == 2
        = render 'posts/form_partials/only_description'
      - elsif params[:type].to_i == 3
        = render 'posts/form_partials/only_title'
      - elsif params[:type].to_i == 4
        = render 'posts/form_partials/all_fields'
    

    post_type .

    new.js.erb ,但它一点也不着火。

    ## PostsController#new
    def new
      @post = Post.new
    
      respond_to do |format|
        format.html
        format.js
      end
    end
    
    ## new.js.erb (testing if I get contact)
    $('button').click(function(){
      console.log("New Action fired up");
    });
    

    最好的方法是什么?我可以改进什么,以便在用户选择时从表单加载正确的部分 邮政编码类型 .

    1 回复  |  直到 7 年前
        1
  •  0
  •   Rubioli    7 年前

    最好的解决办法是添加4个不同的 partials 在你的 view ,并在控制器中执行此操作:

    - if params[:type].present?
      - if params[:type].to_i == 1
        = render 'posts/form_partials/only_image'
      - elsif params[:type].to_i == 2
        = render 'posts/form_partials/only_description'
      - elsif params[:type].to_i == 3
        = render 'posts/form_partials/only_title'
      - elsif params[:type].to_i == 4
        = render 'posts/form_partials/all_fields'
    

    并渲染 在你的 new 看法