Rails 3 Helper还是Partial?传递给partial的变量:locals为空

时间:2012-03-11 04:16:30

标签: ruby-on-rails ruby-on-rails-3 partial-views partial

我在访问shared / _time_select.html.erb中的:prepend_id变量时遇到问题。变量似乎是空的。我们的想法是能够调用partial并传入一个字符串(以预先添加id),这样当页面上有两个或更多时间输入字段时,与post变量不会发生冲突。

我从另一个_form.html.erb partial调用以下行。

<%= render 'shared/time_select', :locals => { :prepend_id => "starttime" } %>

这是我的共享/ _time_select.html.erb

的一部分
<div id="<%= @prepend_id.to_s %>_select_container time_select_container">
    <select name="<%= @prepend_id %>_hour">
        ...
    </select> : 
    <select name="<%= @prepend_id %>_minute">
        ...
    </select> 
    <select name="<%= @prepend_id %>_ampm">
        ... </select>
</div>

这将使他们更容易发布到控制器。然后在控制器中,我可以轻松地将时间附加到以相同形式提交的日期时间。另外,一个侧面的问题是我想知道这是否是使用帮助的好时机?

1 个答案:

答案 0 :(得分:4)

首先,将@放在部分内部。只需使用prepend_id代替@prepend_id

此外,您需要使用:partial AND:locals键,或两者都不使用:

render :partial => 'shared/time_select', :locals => { :prepend_id => "starttime" }
#OR
render 'shared/time_select', :prepend_id => "starttime"

这里看起来像是同样的问题: passing values to partial in rails 3