0

本当に単純な質問だと思うことに対する簡単な答えを見つけるのに問題があります。

私がやりたいことは、あらゆる種類のテキスト フィールドを使用して「件名」を検索し、ユーザーを正しいページにリダイレクトして、その件名に関する情報を入力することだけです。

したがって、ユーザーが「1001」と入力すると、件名「1001」にすでに入力されているデータが入力されたフォームが表示されます。

だから私はここに私が理解しようとしているものがあると思います:

@subject.subject_id という 1 つの変数のみが検索されると仮定します。

テキスト フィールドから変数を保存して、その変数を link_to フィールドに渡すことができるようにするにはどうすればよいですか?

(populate_values) で遊ぶ新しいコントローラー要素を追加しました。

subject_controller.rb

  def update
    @subject = Subject.find(params[:id])

    respond_to do |format|
      if @subject.update_attributes(params[:subject])
        format.html { redirect_to @subject, notice: 'Subject was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @subject.errors, status: :unprocessable_entity }
      end
    end
  end

...

  def populate_values
    @subject_id = params[:subject_id]
    redirect_to screening_path(@subject_id)
  end
end

これが私のルートコードの一部です。初心者であることを許してください。

ルート.rb

  #resources :subjects, only: [:new, :create, :destroy] # Copied th
  resources :subjects

...

 match '/subjects', to: 'subjects#show'
  match '/newsubject', to: 'subjects#new'
  match '/subjects', to: 'subjects#index'
  match '/showsubject', to: 'subjects#show'
  match '/editsubject', to: 'subjects#edit'
  match '/screening', to: 'subjects#screening'
  #match '/populate_values', to: 'subjects#screening' #Just trying to figure out things.

そして、これがユーザーが値を入力する場所からの私の見解です。私が実際に間違っていることは、このフォームに由来する可能性が最も高いと感じています. また、このフォームは、サブジェクト ビューではなくユーザー ビュー内に配置されます。

ビュー/ユーザー/show.html.erb

<% provide(:title, @user.name) %>

<div class="row">
    <aside class="span4">
        <section>
            <h1>
                <%= gravatar_for @user %>
                <%= @user.name %>
            </h1>
            <hr>
        </section>
        <div class="user_profile">
            <h2>Data Entry</h2>
            <body>
                <p><%= link_to "Add a new Patient", newsubject_path %></p>
                <p><%= link_to "View Patients", subjects_path %></p>
                <%= form_tag('/subjects_controller/populate_values') do %>
                    <%= text_field_tag 'subject_id' %>
                    <div class="btn btn-link">
                        <%= submit_tag "Screening Log" %>
                    </div>

                <% end %>

            </body>
        </div>
    </aside>
</div>

どんな助けでも大歓迎です。

編集 1.

私は現在いじっています

<%= link_to "Screening", screening_path, :subject_id => subject.subject_id, :class => 'btn btn-mini' %>

ただし、subject.subject_id は認識されません。「未定義のローカル変数またはメソッド サブジェクト」。

4

1 に答える 1

0

私があなたのことを正しく理解していれば、「検索」ページに、ユーザーが入力したサブジェクト ID をパラメータとして動的に含めるリンクを表示したいと考えています。

物事はこのようには機能しません。あなたが直面している問題は次のとおりです。検索ページの実際のリンクは、ページが読み込まれたとき、つまりユーザーが何かを入力する前にそこにあるため、ユーザーが入力したものにリンクできません。もちろん、トリックを実行する方法はありますが (たとえば、javascript を使用)、ここではフォームを使用したいだけだと思います。

たとえば、次のようになります。

  • ユーザー ビュー内: subject_id を取得し、この subject_id を渡して subject_id を取得し、subject コントローラーでアクションを呼び出すフォームを含む検索ページ

  • サブジェクト コントローラーのこのアクションは、たとえば、Rails のスキャフォールディング機能を使用した場合、おそらくサブジェクト ビューに存在する対応する編集ビューで応答する更新アクションである可能性があります。また、サブジェクト ビューからの特定のビューで応答する、別のコントローラー アクションを作成することもできます。

この Stackoverflow question は、別のコントローラー = form_for に送信されるが、別のアクションに投稿するフォームを作成するのに役立ちます。

サブジェクト コントローラーにフックするようにフォームを調整し、ユーザー ビューの検索ページに配置するだけです。

于 2013-11-26T09:32:50.483 に答える