我正在尝试创建包含动态内容的网页。它是一系列彼此链接的部分,当用户完成时,他们有一个由许多部分组成的完整文档。我以为我可以使用<%= render 'section1' %>
或类似的案例声明,每个部分都有自己的case语句,从58的列表中创建5或6个用户选择的部分文档。但是,我不知道#39;知道如何为rails语句提供输入。我可以使用form_for
还是有另一种方法来为rails用户输入渲染每个部分?
答案 0 :(得分:0)
我将从这个建议开始,但我想我会在你回应这个问题时稍微调整一下。 form_choices将是您要包含的每个部分的名称。对于我的变量,我描绘了将包含在简历构建器应用程序中的部分。我有点自学使用这样的复选框集合,所以我的方法可能不是最常规的。有一些方法可以使用rails的内置check_box功能,但在尝试收集包含&#34;的列表时,这些功能对我来说一直存在问题。
要遵循此示例,您需要定义&#34; sections_to_include&#34;您的DynamicPage模型中的列,以便它可以接受数组作为其值:
应用/模型/ dynamic_page.rb 强>
serialize :sections_to_include
<强> dynamic_page_controller.rb 强>
def new
@dynamic_page = DynamicPage.new
end
def create
@dynamic_page = DynamicPage.new(dynamic_page_params)
if @dynamic_page.save
redirect_to dynamic_page_path(@dynamic_page)
else
render 'new'
end
end
private
def dynamic_page_params
params.require(:dynamic_page).permit(sections_to_include: [])
end
应用/视图/ dynamic_page / new.html.erb 强>
<% form_choices = ["Name", "Contact Info", "Objective", "Work History", "Other Experience", "Skills", "References"] %>
<%= form_for @dynamic_page do %>
<% form_choices.each_with_index do |c, index| %>
<input name="dynamic_page[sections_to_include]" type="checkbox" value="<%= index %>" />
<p><%= c %></p>
<% end %>
<%= submit "Build this Page" %>
<% end %>
现在,show页面遍历您在sections_to_include列中定义的数组。对于每个,它渲染一个名为section_1,section_2等的部分。这将匹配上一个表单复选框中的id号。
应用/视图/ dynamic_page / show.html.erb 强>
<% @dynamic_page.sections_to_include.each do |section_id| %>
<%= render :partial => "/dynamic_page/section_#{section_id}" %>
<% end %>