【问题标题】:Select tag rails选择标签栏
【发布时间】:2013-04-12 17:37:07
【问题描述】:

我有一个需要显示页面列表的视图(我有一个名为 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[['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]})

【问题讨论】:

  • 你能把相关的代码块粘贴到视图中吗?
  • 您正在正确生成选择标签。您在哪里尝试访问页面 ID?在:page 键下,它是否可能在参数哈希中更深?更多上下文会有所帮助。
  • 我是新手,但我认为 :p_id 会自动添加到参数哈希中,并带有所选页面的值,这是真的吗?我正在尝试使用 params[:p_id] 访问控制器中的 :p_id
  • 当您提交表单时,您应该会在日志中看到正在发送的参数 - 它们是什么?
  • 对,但是您必须单击某处,然后 然后 您会在 params 哈希中看到它。如果您有一个form_for 进一步向上调用,它可能是嵌套的。在您的问题中添加更多代码,它会变得更清晰。

标签: ruby-on-rails ruby drop-down-menu view controller


【解决方案1】:

假设@pagelist 采用您描述的格式,那么在您看来:

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

您在示例中错过了它,并且只为 options_for_select 提供了一维数组。

有了这样的准备视图,您的create 操作将收到page id

params[:page]

这是因为您已将:page 作为select_tag 的第一个参数传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2015-11-18
    • 2017-04-08
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多