2017-10-15 9 views
1

動的コンテンツを含むページを作成しようとしています。お互いにリンクしている一連の部分的な部分です。ユーザーが完了すると、多くの部分からなる完全な文書が作成されます。私は<%= render 'section1' %>のようなケースステートメントを使うことができると思っていました。それぞれの部分ステートメントは、58のリストから5つまたは6つのユーザー選択パーシャルの文書を作成するために独自のcaseステートメントを持っています。 case文の入力をレールに与えます。 form_forを使用することができますか?また、各部分をレンダリングするためのレール入力をユーザーに与える別の方法はありますか?レールでパーシャルをレンダリングするためのcase文5

答えて

0

私はこの提案から始めますが、私はあなたがこれに反応するにつれて少し調整すると思います。 form_choicesは、含める各セクションの名前になります。私の変数については、私はレジュメビルダーアプリに含まれるセクションを描いていました。私はこのようなチェックボックスのコレクションを使用するように教えていますので、私のアプローチは最も一般的ではないかもしれません。レールの組み込みcheck_box機能を使用する方法がありますが、 "includeのリスト"を収集しようとすると問題が発生しています。

この例に従うには、あなたはそれがその値として配列を受け入れることができるように、あなたのDynamicPageモデルに「sections_to_include」列を定義する必要があります:

アプリ/モデル/ 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 %> 

今、あなたは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 %> 
+0

この方法で提出押すと、レールはポストルートを探すために起こっています。私がモデルを更新していない場合、コントローラはこの情報で何をすべきですか?その部分をレンダリングするためにビューにどのように指示する必要がありますか? – Martin

+0

あなたの質問はもう少しだと思うので、おそらくモデルを更新するべきです。コントローラと2番目のビューで使用できるコードを追加しました。私はこれをテストしていないので、paramsは私が考えている方法を正確に並べることはできません。 section_to_include列が次のビューで必要とされる配列の型を受け取っているかどうかを確認するために、少しデバッグする必要があります。 –

関連する問題