loo*_*obs 0 parameters ruby-on-rails partial-views
我正在尝试将这些局部参数传递给部分形式,并将它们传递给hidden_fields。我无法将值直接放入表单,因为它们会发生变化。任何帮助将不胜感激。
我有:
<% form_for :user, @user, :url => { :action => "create", :controller => "users"} do |f| %>
<%= f.error_messages %>
<%= render :partial => "form", :locals => { :f => f, :position => 'Company Commander', :battalion_id => @battalion.id, :company_id => c.id} %>
<%= f.submit "Register" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
_form.html
<%= f.hidden_field (:position, :value => :position) %>
<%= f.hidden_field (:battalion_id, :value => @battalion.id) %>
<%= f.hidden_field (:battalion_id, :value => @company.id) %>
<%= f.hidden_field (:roles, :value => "Company") %>
<%= f.label (:name, "Name:") %>
<%= f.text_field :name%>
<br />
<%= f.label (:login, "Login:") %>
<%= f.text_field :login %>
<br />
<%= f.label (:email, "E-Mail:") %>
<%= f.text_field :email%>
Run Code Online (Sandbox Code Playgroud)
您在这里混淆了两个想法。
第一,
实例变量(名称以“ @”开头的变量)可用于所有视图和部分视图。它可以工作,但是被认为是不好的做法。特别是在处理可以从多个动作中调用的部分时。
无论如何,没有理由您的代码不起作用。即使您在locals参数中没有company_id和battalion_id。
第二,
您似乎误解了:locals参数的工作方式。当使用:locals的哈希值调用render时,Rails将为给定哈希值中的每个键/值对定义一个局部变量。每个局部变量将具有名称哈希键和哈希值的值。
以您的代码为例:
<%= render :partial => "form", :locals => { :f => f, :position => 'Company Commander', :battalion_id => @battalion.id, :company_id => c.id} %>
Run Code Online (Sandbox Code Playgroud)
:这将使得部分可以访问下面的局部变量f,position,battalion_id并company_id分别设定为F,“连长”,@ battalion.id,@ company.id的当前值。
PS: battalion_id有两个隐藏字段。只会使用第一个。看起来第二个应该是company_id。
| 归档时间: |
|
| 查看次数: |
3573 次 |
| 最近记录: |