将变量传递给部分内部部分

时间:2015-06-27 13:06:16

标签: ruby-on-rails

在view.html.erb中:

<%= render @posts %>

在每个_post.html.erb中:

<%= render partial: 'shared/block', locals: { blockedcallsign: post.user.callsign } %>

在每个_block.html.erb中:

<%= button_to blockrelationships_path(
                params: { 
                  blocker_callsign: @user.callsign, 
                  blocked_callsign: blockedcallsign #'baz'
                },
                remote: true
              ),
              class: 'btn btn-default btn-xs' do %>
  <span class="glyphicon glyphicon-ban-circle" aria-hidden="true"></span>
<% end %>

在_block.html.erb中我收到错误:undefined local variable or method 'blockedcallsign'。当我用像'baz'这样的字符串替换blockedcallsign时,它可以工作。由于某种原因,blockedcallsign没有从_post.html.erb传递到_block.html.erb。代码有什么问题?

3 个答案:

答案 0 :(得分:1)

最新的方式是:

<%= render 'shared/block', { blockedcallsign: post.callsign } %>

传递为哈希。

答案 1 :(得分:1)

您正在寻找的语法是

render 'shared/block', locals: {blockedcallsign: post.callsign}

中的

_posts.html.erb

然后,在_block.html.erb中,您需要致电blockedcallsign而不是@blockedcallsign

答案 2 :(得分:0)

代码没有错。有一个被遗忘的第二个渲染&#39;在view.html.erb导致问题。遗憾。