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
视图
中呈现 正确的 部分
在我的应用程序中,我有一个 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
视图