0

フォームのリストを作成しています

Questions form  
Answers form  
Hints form 

これらはすべて、異なるコントローラーとビュー、question_controller、answers_controller、hints_controller を持っています。

ここで、ホームページのタブ付き UI でこれらすべてのビューを取得する必要があります (たとえば、 home_controller 、 home#index )。

render : partial ,render :templatelocalsで試しましたが、達成できません。

すべてのオブジェクトを同じコントローラーに移動することで簡単に実行できます( home_controller 、ただし、ホームコントローラーを管理するには複雑になりすぎるため、このアプローチについてはわかりません)が、これを別のコントローラーに保持する必要があります( question_controller 、answers_controller 、hints_controller) を作成し、同じページにレンダリングします。クライアント側の検証、単純なフォームの宝石を使用しています。

以下は私の質問コントローラーです

class QuestionsController < ApplicationController

def index
    @question = Question.new

    @question_status = []
    @question_mode = []
    @question_type = []

    @question_lookups = Lookup.where({:lookup_for => "question"})

    @question_lookups.each do |lk|
        case lk.lookup_type
            when 'mode'
                @question_mode << lk
            when 'status'
                @question_status << lk
            else
                @question_type << lk
        end
    end

    @caa = Questioncaa.new

end

end

質問ビュー (簡易フォームあり)

<%= simple_form_for @question, :validate => true do |q| %>
<%= q.input :question_info,  :as => :ckeditor, :input_html => { :toolbar => 'Easy', :width => 750 }  %> 
<%= q.input :question_source %>
<%= q.input :is_mobile %>
<%= q.input :is_similar_question %>
<%= q.input :is_boss_question %>
<%= q.input :is_racing_question %>
<%= q.input :is_speed_question %>
<%= q.input :difficulty_level %>
<%= q.input :ideal_time %>

<%= q.input :lookups, :collection => @question_mode, :value_method => :id, :label_method => :lookup_value,:prompt => "Choose Mode", :label => :QuestionMode %>
<%= q.input :lookups, :collection => @question_status, :value_method => :id, :label_method => :lookup_value,:prompt => "Choose Status", :label => :QuestionStatus %>
<%= q.input :lookups, :collection => @question_type, :value_method => :id, :label_method => :lookup_value,:prompt => "Choose Type", :label => :QuestionType %>

<%= simple_fields_for @caa do |c| %>
    <%= c.input :needs_hints %>
    <%= c.input :needs_video_solution %>
    <%= c.input :needs_tips_tricks %>
    <%= c.input :needs_formulae %>
    <%= c.input :needs_key_concepts %>
<% end %>


<%= q.button :submit %>

<% end %>

ホーム ビュー

<div class="tab-content">
          <div class="tab-pane active" id="learning_map">

                <!-- I need to acheive this -->
                <%= render :template => "learning_map/index" %>

            </div>
            <div class="tab-pane" id="questions">

                <!-- I need to acheive this -->
                <%= render :template => "questions/index", :collection => @question_mode %>

            </div>
            <div class="tab-pane" id="answers">.

                <!-- I need to acheive this -->
                <%= render :templates => "answers/index" %>

            </div>
        </div>

Pls は私に助言します、それは非常に役に立ちます。これを読んでくれてありがとう。

4

1 に答える 1

0

テンプレートのロジックを少し変更する必要があります (これは「質問」ビューの例です)。

1) 質問テンプレートを 2 つのファイルに分割します。 - simple_form_for のフォーム宣言を含むヘッダー - 次<%= fields_for @question do |q| %>のような質問フィールドのリストを含む _form.html.erb ファイル<%= q.input %>

<%= render :partial => 'form' %>2)ヘッダーファイルに追加します

3)<%= render :partial => 'question\form' %>ホーム ビュー テンプレートで使用する

4) home_controller で @question 変数を初期化することを忘れないでください。

于 2012-11-14T10:04:34.753 に答える