1

ページのリストを表示する必要があるビューがあり (Page というモデルがあります)、選択したページの ID が必要です。

ビューにこのコードがあります

むかしむかし

: <%= form_for :task, :url => {:action=>"create", :controller=>"tasks"}, :html => {:class :  

=> "nifty_form"} do |f| %>

 <% if @task.errors.any? %>
    <div id="error_explanation">
      <h2>: عذرا لم نستطع استكمال طلبك</h2>

      <ul>
        <% @task.errors.full_messages.each do |msg| %>
          <li style="color:red;"><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
  <div class="field">
    <%= f.label "اسم المهمة" %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label "وصف المهمة" %><br />
    <%= f.text_area :description %>
  </div>
  <div class="actions">
    <button><%= link_to 'العودة الى قائمة المهام', project_tasks_path %></button>
    <%= f.submit "مهمة جديدة"%>
  </div>
<%= select_tag(:page, options_for_select(['a',1])) %>
<% end %>

@pageslist次の形式の 2 次元配列です。[['pagename', 1], ..]

問題は、コントローラーで選択したページの page_id にどのようにアクセスできますか?

試してみましたが、うまくいきparams[:p_id]ません。助けてください。

これは私がコントローラーに持っているものです:

@task = Project.find(params[:project_id]).tasks.new(params[:task])

@task.update_attributes({:page_id => params[:p_id]})
4

1 に答える 1

0

@pagelistそれがあなたが説明したような形式であると仮定すると、あなたの見解では:

<%= select_tag(:page, options_for_select( @pagelist )) %>

あなたの例ではそれを見逃していて、 に 1 次元配列のみを提供しましたoptions_for_select

このように準備されたビューを使用すると、createアクションは次のようpage idになります。

params[:page]

:pageの最初の引数として渡したためですselect_tag

于 2013-04-12T19:37:36.167 に答える