Rails 4 - 在来自 new.js.erb 的新动作中呈现不同形式的部分

Rails 4 - Render different form partials in new action from new.js.erb

在我的应用程序中,我有一个 Post 模型。当用户添加 post 时,他们可以 select 4 种不同类型的 post。基本上,每个 type 在表单中都有不同的字段。

*例如:类型 1 只有图片,类型 2 只有描述,类型 3 只有标题,而 Type 4 的所有字段都处于活动状态。

目前,当用户点击添加新Post时,他们需要select一个post类型(来自 bootstrap 模态) 并且我将 param type 添加到 link 并将其添加到:

= 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'

但我不喜欢我目前的做法,我更喜欢在他们 select 编辑 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");
});

当用户 selected post_type.

时,最好的方法是什么以及我可以改进什么以从表单加载正确的部分

感谢任何帮助!

最好的解决方案是在您的 view 中添加 4 个不同的 partials,然后在您的控制器中执行此操作:

- 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 视图

中呈现 正确的 部分