Rails 4 - passing variable to partial

后端 未结 7 1429
没有蜡笔的小新
没有蜡笔的小新 2020-11-28 03:49

I am following the Ruby on Rails tutorial and have come across a problem while trying to pass variables to partials.

My _user partial is as follows

7条回答
  •  一整个雨季
    2020-11-28 04:14

    From the Rails api on PartialRender:

    Rendering the default case

    If you're not going to be using any of the options like collections or layouts, you can also use the short-hand defaults of render to render partials.

    Examples:

    # Instead of <%= render partial: "account" %>
    <%= render "account" %>
    
    # Instead of <%= render partial: "account", locals: { account: @buyer } %>
    <%= render "account", account: @buyer %>
    
    # @account.to_partial_path returns 'accounts/account', so it can be used to replace:
    # <%= render partial: "accounts/account", locals: { account: @account} %>
    <%= render @account %>
    
    # @posts is an array of Post instances, so every post record returns 'posts/post' on `to_partial_path`,
    # that's why we can replace:
    # <%= render partial: "posts/post", collection: @posts %>
    <%= render @posts %>
    

    So, you can use pass a local variable size to render as follows:

    <%= render @users, size: 50 %>
    

    and then use it in the _user.html.erb partial:

  • <%= gravatar_for user, size: size %> <%= link_to user.name, user %>
  • Note that size: size is equivalent to :size => size.

提交回复
热议问题