【问题标题】:How can I get value from partial?我怎样才能从部分获得价值?
【发布时间】:2011-05-05 18:59:18
【问题描述】:

我使用部分作为表单的一部分来创建新任务。部分是类别的动态列表 (AJAX),因此用户可以选择适当的类别。

我需要访问 tasks_controller 中的 categories/category_list/@current_category 变量才能将所选类别分配给任务。

new.html.erb

<%= form_for @task do |form| %>  
  Category:
  <%= render :partial => 'categories/category_list', :object => Category.root_list %>  
  ... 
<% end %>

tasks_controller.rb

def create   
  @task = Task.new(params[:task])  
  @task.category_id = ????  
  @task.save 
  ... 
end

感谢您的帮助!

【问题讨论】:

    标签: javascript html ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    如果我理解正确,您想访问 HTML 字段的值,并且该字段是动态生成的,但静态提交的。这与没有 AJAX 的情况下没有区别。

    给定字段的名称,您可以使用params[:name_of_field] 访问它。您还可以手动指定字段的名称,在您的情况下为task[category_id],在这种情况下,您可以省略 ???来自您的控制器,因为它将被 params[:task] 覆盖。

    【讨论】:

    • 感谢您的帖子。事实上,如果是表单嵌入的 HTML 字段,我可以访问 :category_id。但是这里我想将类别选择控件封装成一个部分。部分是一个
      ,里面有列表项 (
    • )。一旦用户选择了一个类别,该列表就会重建,直到选择了最兄弟的类别。然后我需要从部分检索所选类别的 ID。请注意partial和form属于不同的controller。
  • 不管是不是两个控制器生成的,都无所谓。这一切都以提交的单个 HTML 的形式结束。如果您想将一些变量从主要动作/模板传递给部分,请使用render:locals=&gt;{:local_variable=&gt;value}。如果你想读取被选中的值,或者对用户从 Dropbox 中选择一些东西做出反应,请阅读不显眼的 JavaScript 并形成观察者。不过,我可能仍然没有抓住重点。 ;) 还有一件事:当有&lt;li&gt;s 时,使用&lt;ul&gt;&lt;ol&gt;,而不是&lt;div&gt; 作为它们的容器。
  • 对,我可以简单地将值传递给部分。但我需要示例如何从中检索值(-s)。
  • 我认为这与 partials 的想法有些矛盾,它应该是自包含的;) Partials 也可以修改和访问可用于调用它们的模板的@variables,所以如果你声明@987654331 @在渲染partial之前,然后在partial中设置@foo = 5,调用partial后在模板中显示@foo,就是5
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签