0

現時点では、projects/index ビューにプロジェクトのリストがあります。ユーザーが現在しなければならないことは、プロジェクトの [表示] をクリックしてから、[プロジェクトの選択] をクリックすることです。これにより、コントローラーで作成したカスタム アクションが呼び出され、プロジェクトの ID がセッションに渡されるため、関連するタスクなどのみが次のページに表示されます。

私がやりたいことは、インデックス ビューにドロップダウン メニューを表示し、すべてのプロジェクトのリストを表示することです。次に、送信ボタンをクリックすると、まったく同じように、そのプロジェクトの ID がセッションに渡されます。これを行うと考えられるあらゆる方法を試しましたが、何も機能しません。主に、プロジェクトのIDがドロップダウンから渡されていないように見えるためです。

私の質問は、ドロップダウン メニューのプロジェクトから ID を取得し、それをセッションに渡すカスタム アクションを呼び出す送信ボタンを取得するにはどうすればよいですか?

コントローラーのインデックス アクションにコードを追加する必要があるかどうか、または送信ボタンがカスタム アクションを呼び出すことができるかどうかはわかりません。私はレールにかなり慣れていないので、より多くの人が説明できるほど良いです!!

プロジェクト/インデックスは次のとおりです。

<%= form_for(@project) do |f| %>
  <% if @project.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2>

      <ul>
      <% @project.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <div class="field">
  <%= f.hidden_field :company_id, :value => session[:company_id] %>
  </div>
  <div class="field">
  <%= collection_select :project, :id, Project.all, :id, :name %>
  </div>
  <div class="actions">
    <%= f.submit 'Select Project', :class => "btn btn-primary" %>
  </div>
<% end %>

これまでのコントローラーコード:

def index
  @projects = Project.all

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @projects }
  end
end

def select_project
  project = Project.find(params[:id])
  session[:project_id] = project.id
  redirect_to root_url, notice: "Current project set to: #{project.name}, ID: #{project.id}"
end

置けない

@project = Project.find(params[:id])

そうしないと、ID のないプロジェクトを見つけることができないと表示されます。

4

1 に答える 1

0

フォームを送信するとき、これはコントローラの update または create アクションによって行われます。

セッションからドロップダウンをロードしている理由をお尋ねしてもよろしいですか? Rails ヘルパーを使用して、:where などを使用して (フィルター処理された) レコードを見つけることができるためです。

オプション属性としてドロップダウンにリストできるため、返された配列を取得したら。それらを更新または作成アクションに送信します。そこに着いたら、送信されたハッシュから値を取得できます

params[:key][:nested_key]

あるいは単に

params[:key]

ここでこれを行っている間、後で使用するためにこれらをセッションまたは変数にバインドすることもできます。

フローをできる限り堅牢で簡単にするようにしてください。

楽しむ

于 2012-07-04T15:20:37.777 に答える