[RUBY-ON-RAILS] 어떻게 레일에서 같은 양식 버튼을 제출 여러 만듭니 까?
RUBY-ON-RAILS어떻게 레일에서 같은 양식 버튼을 제출 여러 만듭니 까?
여러 개의 버튼을 제출이 필요합니다.
나는 Contact_Call의 인스턴스를 생성하는 형태를 갖는다.
하나 개의 버튼을 정상으로 만듭니다.
다른 버튼을 만들지 만 다른이 있어야합니다 : 기본에서 속성 값을, 또한 컨트롤러에서 사용되는 다른에 속성이 있지만, 관련 모델을 설정해야합니다.
어떻게 그렇게 할 수 있습니까? [: PARAMS] 난 너무 의해 선택됩니다 다른 변수를 보낼 수있는 방법이, 경로를 변경할 수 없습니다?
그때한다면, 나는 case 문을 설정, 컨트롤러에 무엇을해야합니까?
해결법
-
==============================
1.여러 버튼을 제출하고 각각에 다른 값을 제공 만들 수 있습니다 :
여러 버튼을 제출하고 각각에 다른 값을 제공 만들 수 있습니다 :
<% form_for(something) do |f| %> .. <%= f.submit 'A' %> <%= f.submit 'B' %> .. <% end %>
이 출력됩니다 :
<input type="submit" value="A" id=".." name="commit" /> <input type="submit" value="B" id=".." name="commit" />
컨트롤러 내부, 제출 버튼의 값은 매개 변수 커밋을 식별 할 것이다. 필요한 처리를 할 수있는 값을 확인 :
def <controller action> if params[:commit] == 'A' # A was pressed elsif params[:commit] == 'B' # B was pressed end end
그러나, 매우 바람직하지 않을 수있는이 단단히 커플 컨트롤러에보기를 기억 해요.
-
==============================
2.또 다른 방법은 제출 버튼의 formaction 속성을 사용하여도 있습니다 :
또 다른 방법은 제출 버튼의 formaction 속성을 사용하여도 있습니다 :
<% form_for(something) do |f| %> ... <%= f.submit "Create" %> <%= f.submit "Special Action", formaction: special_action_path %> <% end %>
표준 깨끗한 코드 숙박이 어떤 변화를 필요로하지 않는 버튼을 만들 경우에만 특수 버튼의 라우팅 경로 삽입 :
-
==============================
3.버튼의 속성 이름을 변경 눌러 진 당신은 대안으로 인식 할 수 있습니다.
버튼의 속성 이름을 변경 눌러 진 당신은 대안으로 인식 할 수 있습니다.
<% form_for(something) do |f| %> .. <%= f.submit 'A', name: 'a_button' %> <%= f.submit 'B', name: 'b_button' %> .. <% end %>
값을 : [커밋] : 그것은 당신이 PARAMS 키의 존재를 확인하는 대신 단순히 PARAMS을 확인해야하기 때문에 조금 불편 비트의 [: a_button] 또는 PARAMS [: b_button 하나를 누른에 따라 당신은 PARAMS을 받게됩니다.
-
==============================
4.어떤 보석을 사용하지 않고 @ vss123가 제시 한 유사 솔루션 :
어떤 보석을 사용하지 않고 @ vss123가 제시 한 유사 솔루션 :
resources :plan do post :save, constraints: lambda {|req| req.params.key?(:propose)}, action: :propose post :save, constraints: lambda {|req| req.params.key?(:finalize)}, action: :finalize end
I 버튼 값을 값과 사용 입력 이름을 사용하지 않고 이후 제출하는 것을 알 수 종종 번역 / 국제화된다. 또한, 나는 그것이 신속하게 경로 파일을 혼란 때문에 너무 많은이를 사용하지 않는 것입니다.
-
==============================
5.우리는 레일에 고급 제약 조건을 사용하여 해결했다.
우리는 레일에 고급 제약 조건을 사용하여 해결했다.
아이디어는 동일한 경로 (따라서 같은 이름의 경로 및 행동)하지만 다른 작업에 라우팅 제약하는 것입니다.
resources :plan do post :save, constraints: CommitParamRouting.new("Propose"), action: :propose post :save, constraints: CommitParamRouting.new("Finalize"), action: :finalize end
방법의 일치를 가지고 간단한 클래스입니다 CommitParamRouting? 이는이 PARAM 지정된 인스턴스 ATTR 일치 위탁하는 경우 true를 반환합니다. 값.
보석의 commit_param_matching 등이 가능합니다.
-
==============================
6.오래된 질문은,하지만 난 같은 상황을 처리했습니다 때문에, 나는 내 솔루션을 게시 할 거라고 생각했다. I 컨트롤러 로직과보기 버튼 사이의 불일치를 피하고 제어 상수를 이용하고있다.
오래된 질문은,하지만 난 같은 상황을 처리했습니다 때문에, 나는 내 솔루션을 게시 할 거라고 생각했다. I 컨트롤러 로직과보기 버튼 사이의 불일치를 피하고 제어 상수를 이용하고있다.
class SearchController < ApplicationController SEARCH_TYPES = { :searchABC => "Search ABCs", :search123 => "Search 123s" } def search [...] if params[:commit] == SEARCH_TYPES[:searchABC] [...] elsif params[:commit] == SEARCH_TYPES[:search123] [...] else flash[:error] = "Search type not found!"] [...] end end [...] end
다음보기에서 :
<% form_for(something) do |f| %> [...] <%= f.submit SearchController::SEARCH_TYPES[:searchABC] %> <%= f.submit SearchController::SEARCH_TYPES[:search123] %> [...] <% end %>
컨트롤러에서 상수로 -이 방법은 텍스트는 한 장소에 살고있다. 나는 그러나, 아직이 문제를 국제화하는 방법을 알아 내려고 시도하지 않았습니다.
-
==============================
7.그래서 이름 만 나를 위해 충분하지 않아 사용 nested_form_fields에 내 양식 덕분에 제출 버튼의 변수 번호를 가지고있다. 나는 형태의 숨겨진 입력 필드를 포함하여 양식 중 하나가 누른 버튼을 제출할 때 그것을 채우기 위해 자바 스크립트를 사용하여 끝났다.
그래서 이름 만 나를 위해 충분하지 않아 사용 nested_form_fields에 내 양식 덕분에 제출 버튼의 변수 번호를 가지고있다. 나는 형태의 숨겨진 입력 필드를 포함하여 양식 중 하나가 누른 버튼을 제출할 때 그것을 채우기 위해 자바 스크립트를 사용하여 끝났다.
from https://stackoverflow.com/questions/3027149/how-do-i-create-multiple-submit-buttons-for-the-same-form-in-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 액티브 또는 쿼리 해시 표기 (0) | 2020.02.05 |
---|---|
[RUBY-ON-RAILS] 액티브 쿼리 연합 (0) | 2020.02.05 |
[RUBY-ON-RAILS] 3 레일 : "필드 - 오류가있는"페이지의 모양이 변경 래퍼. 어떻게 이것을 피하기 위해? (0) | 2020.02.05 |
[RUBY-ON-RAILS] accepts_nested_attributes_for find_or_create와? (0) | 2020.02.05 |
[RUBY-ON-RAILS] 어떻게 Arel와 레일에서 LIKE 쿼리를 할까? (0) | 2020.02.05 |