2012-03-22 3 views
1

내가 만든 비계 생성 테이블에서 별도의 색인 /보기가 필요합니다. 이 견해에서, 나는 원래의 비계 컬럼의 약 절반을 가지고 있는데, 사용자가 그 중 2 개를 편집하고 업데이트 할 수 있다는 의도입니다. 이 뷰를 생성하기 위해 비 스캐 폴드 컨트롤러를 만들었습니다. 그래서 내 질문 :비 REST 부분 형식의 REST 및 비 REST 동작과 리소스를 결합 할 수 있습니까?

1). 스캐 폴드와 비 스캐 폴드 자원을 비 스캐 폴드 부분 형태로 결합 할 수 있습니까?

2). Scaffold 테이블로의 업데이트와 함께 non-scaffold 컨트롤러에서 edit 액션과 partial을 사용할 수 있습니까?
프로덕션 환경에서 이것은 일종의 인증 시스템일까요?하지만 지금은 그 가능성을 찾고 싶습니다. 비계 기 컨트롤러의 내 뷰/인덱스가 작동하지만 편집 버튼은 아무 것도하지 않습니다. 내가 놓친 게 있니? 현재로서는 Windows 7에서 Rails 3.0을 사용하고 있습니다. 부분에서

라우팅 :

def edit 
    @achvr = Achvr.find(params[:id]) 
    end 
+0

나는 신중하게 보지 못했지만 부분을 독립형 페이지로 렌더링하려는 경우는 없을 것이라고 생각합니다. 부분은 재사용 가능한 뷰 "함수"의 일종으로 간주됩니다. Rails가 페이지를 조합하는 작업을 수행하게합니다 (레이아웃부터 시작하여 특정보기 및 해당 부분 또는 부분을 시작). –

답변

0

내가 돈 '이 내 비 발판 컨트롤러에서 편집 작업입니다

Effcnt::Application.routes.draw do 
    get "ravs/index" 
    get "ravs/edit" 
    get "ravs/_dec" 
    resources :achvrs 

: 이것은 내 routes.rb입니다

<%= form_tag(:controller=> "ravs", :method=> "get", :action=> "edit", :class=> "_dec") %> 

    <div > 
    <%= submit_tag(:controller=> "achvrs", :method=> "put", :action=> "update") %> 
    </div> 
    <% end %> 

귀하의 코드가 작동한다고 생각하지 마십시오. (rails2.3.x에서 3.2) API를 레일에 따른 때문에, "submit_tag는"이 태그 지원이 무엇인지 당신이 제공하는 옵션 (

<%= submit_tag(:controller=> "achvrs", :method=> "put", :action=> "update") %> 
)를 가지고 있지 않습니다

:confirm => 'question?' - This will add a JavaScript confirm prompt with the question specified. If the user accepts, the form is processed normally, otherwise no action is taken. 
:disabled - If true, the user will not be able to use this input. 
:disable_with - Value of this parameter will be used as the value for a disabled version of the submit button when the form is submitted. 
Any other key creates standard HTML options for the tag. 

또한 구현 코드가 이해할 수 없다고 생각합니다. 양식은 1 개의 대상 (some_controller # some_action)에만 제출할 수 있지만 한 번에 2 개의 작업에 양식을 제출하려는 것 같습니다.

그래서, 난 당신이 더 나은 레일 'MVC의 방법으로 코드를 작성했다 생각 : 나는 당신이 바로, 당신이 원하는 이해한다면

def the_action_your_form_submitted_to 
    # previously it was called in your RESTful action 
    do_task_no.1 
    # previously it was called in your non-RESTful action 
    do_task_no.2 
end 
0

: 당신이 한 행동으로 실행하고자하는 코드, 예를 결합 말하자면 1 열보기에서 2 열의 레코드를 편집 할 수 있습니다.

당신은
  • 당신은 당신이 함께 ravs#edit로 전송됩니다
  • 이러한 기록 중 하나에서 편집을 클릭 ravs#index
  • ravs#index 나열 방문하는 모든 Achvr 기록이 같은 기능이

    1. ? :인가 :id 레코드와 일치합니다
    2. 이보기에서 :col1 및의 값을 업데이트 할 수 있습니다
    3. 당신은 당신이 할 수 ravs#edit에 대한 귀하의 내부보기 achvrs#update

    당신을 보내는 '제출'버튼을 누르십시오.@achvrAchvr 모델의 인스턴스이므로 form_for을 사용하면 작동합니다. 그런 다음 자체 제어기를 가리 킵니다. 당신의 achvrs#update 행동

    <%= form_for(@achvr, :html => {:class => '_dec'}) do |f| %> 
         <%= f.text_field :col1 %> 
         <%= f.text_field :col2 %> 
         <%= f.submit %> 
        <% end %> 
    

    당신은 다음의 값에 대한 params 해시를 확인할 수 있습니다. 그러나 스캐 폴딩 된 업데이트 메소드는 상황을 올바르게 업데이트해야합니다. ravs#edit에서 업데이트하는 경우 및 :col2

    최종 단어 만 값을 유지합니다. 이렇게하는 것은 적절한 방법이 아닙니다. 사용 권한을 가진 사용자 모델을 원할 수 있습니다. 그런 다음 어떤 값을 편집 할 수 있는지 필터링하십시오.

  • +0

    답장을 보내 주셔서 감사합니다. 네, 제 의도가 옳았습니다. 프로덕션 환경에서는 이것이 모델과 권한을 기반으로한다고 생각했습니다. 그 시간에 찾아보고 게시 할 것입니다. 다시 한번 감사드립니다. – KirDav