IT박스

Rails 4-변수를 부분적으로 전달

itboxs 2020. 7. 26. 12:41
반응형

Rails 4-변수를 부분적으로 전달


Ruby on Rails 튜토리얼을 따르고 있으며 변수를 부분으로 전달하는 중에 문제가 발생했습니다.

_user부분은 다음과 같습니다

<li>
  <%= gravatar_for user, size: 52 %>
  <%= link_to user.name, user %>
</li>

크기 값으로 숫자를 전달하고 싶습니다. 나는 운없이 다음과 같이 노력하고 있습니다.

<%= render @users, :locals => {:size => 30} %>

미리 감사드립니다!


로컬을 전달하는 경우 전체 렌더링 부분 구문이 필요합니다.

<%= render @users, :locals => {:size => 30} %>

된다

<%= render :partial => 'users', :collection => @users, :locals => {:size => 30} %>

또는 새로운 해시 구문을 사용하려면

<%= render partial: 'users', collection: @users, locals: {size: 30} %>

나는 훨씬 더 읽기 쉽다고 생각합니다.


PartialRender 의 Rails API에서 :

기본 사례 렌더링

컬렉션이나 레이아웃과 같은 옵션을 사용하지 않을 경우 짧은 기본 렌더링을 사용하여 부분을 렌더링 할 수도 있습니다.

예 :

# 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 %>

따라서 로컬 변수 size전달하여 다음과 같이 렌더링 할 수 있습니다 .

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

그런 다음 _user.html.erb부분적으로 사용하십시오 .

<li>
    <%= gravatar_for user, size: size %>
    <%= link_to user.name, user %>
</li>

이 ( size: size는)와 동일합니다 :size => size.


어느 한 쪽

render partial: 'user', locals: {size: 30}

또는

render 'user', size: 30

사용하려면 locals필요합니다 partial. 포함하지 않는 partial인수, 당신은 직접 (안 내 변수를 나열 할 수 있습니다 locals)


JavaScript를 사용하여 렌더링하는 경우 escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");


localsRails 4.2 이상 에서는 사용하지 마십시오

Rails 4.2에서는 locals부품 을 제거하고 size: 30대신 사용 했습니다. 그렇지 않으면 로컬 변수를 올바르게 전달하지 못합니다.

예를 들어 다음을 사용하십시오.

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

문법적으로 조금 다르지만 내 의견으로는 더 깨끗해 보입니다.

render 'my_partial', locals: { title: "My awesome title" }

# not a big fan of the arrow key syntax
render 'my_partial', :locals => { :title => "My awesome title" }

부분에 대해 render 함수를 호출하면 로컬 변수를 만들 수 있으므로 부분을 사용자 정의하려는 경우 다음과 같이 부분을 렌더링 할 수 있습니다 _form.html.erb.

<%= render 'form', button_label: "Create New Event", url: new_event_url %>
<%= render 'form', button_label: "Update Event", url: edit_event_url %>

this way you can access in the partial to the label for the button and the URL, those are different if you try to create or update a record. finally, for accessing to this local variables you have to put in your code local_assigns[:button_label] (local_assigns[:name_of_your_variable])

<%=form_for(@event, url: local_assigns[:url]) do |f|  %>
<%= render 'shared/error_messages_events' %>
<%= f.label :title ,"Title"%>
  <%= f.text_field :title, class: 'form-control'%>
  <%=f.label :date, "Date"%>
  <%=f.date_field :date, class: 'form-control'  %>
  <%=f.label :description, "Description"%>
  <%=f.text_area :description, class: 'form-control'  %>
  <%= f.submit local_assigns[:button_label], class:"btn btn-primary"%>
<%end%>

참고URL : https://stackoverflow.com/questions/16242121/rails-4-passing-variable-to-partial

반응형

'IT박스' 카테고리의 다른 글

R에서 ggplot2로 히스토그램 오버레이  (0) 2020.07.26
비트 맵을 파일로 변환  (0) 2020.07.26
HTML 테이블에 가로 스크롤 막대 추가  (0) 2020.07.26
토큰 인증 및 쿠키  (0) 2020.07.26
jQuery UI 대화 상자 위치  (0) 2020.07.26