Rails에는 양식에서 일부 매개 변수를 수락해야하는 사용자 지정 컨트롤러 작업이 있습니다.
def update_ordid
# Get the active exchange
@exchange = Exchange.find(params[:id])
# Decide which order ID field to update
active_order_field = params[:ordfld]
# Save the order ID
order_id = params[:ordid]
if active_order_field == 1 then
@exchange.order_id_1 = order_id
else
@exchange.order_id_2 = order_id
end
@active_exchange.save
respond_with(@exchange)
end
이러한 매개 변수는 교환 테이블의 실제 데이터 필드가 아니기 때문에 일반적으로 다음과 같은 링크를 사용하여 작업을 호출합니다.
link_to "Update Order ID", update_ordid_exchange(ordfld: value_from_form, ordid: value_from_form), :method => :post
이 경우 이러한 매개 변수의 값은 사용자 입력으로 채워야하므로 데이터를 전달하기 위해 다음 양식을 작성했습니다.
<%= form_for(@exchange, url: update_ordid_exchange_path) do |f| %>
<div class="field">
<%= f.label :ordid, "Order ID" %><br>
<%= f.text_field :ordid, class: "form-control" %>
</div>
<% if @isrequestor == true %>
<%f.hidden_field :ordfld, :value => "1" %>
<% else %>
<%f.hidden_field :ordfld, :value => "2" %>
<% end %>
<div class="actions">
<%= f.submit "Submit", class: "btn btn-primary" %>
</div>
<% end %>
이 양식을 렌더링하려고하면 오류가 발생합니다. #에 대한 undefined method`ordid '
이 문제를 조사 할 때 text_field 줄을 다음과 같이 변경하면이 작업을 수행 할 수 있다는 것을 알았습니다.
<%= f.text_field_tag :ordid, class: "form-control" %>
이렇게하면 초기 오류가 해결되지만 새로운 오류가 발생합니다. #에 대한 정의되지 않은 메서드`text_field_tag '
내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?
form_for
양식 요소가 모델의 속성을 나타내지 않기 때문에 사용할 수 없습니다 . 사용하는 form_tag
대신
<%= form_tag(update_ordid_exchange_path, :method => :patch) do%>
<div class="field">
<%= label_tag "Order ID" %><br>
<%= text_field_tag :ordid, class: "form-control" %>
</div>
<% if @isrequestor == true %>
<%= hidden_field_tag :ordfld, "1" %>
<% else %>
<%= hidden_field_tag :ordfld, "2" %>
<% end %>
<div class="actions">
<%= submit_tag "Submit", class: "btn btn-primary" %>
</div>
<%end%>
여기에 문서화
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다