2012-06-09 6 views
0

레일즈에 익숙하지 않고 해당 모델 객체가 없어도 Ajax를 통해 제출하는 양식을 작성하는 방법을 이해하는 데 어려움이 있습니다.레일스 : 모델 객체가없는 Ajax 지원 양식

사례 유스 케이스는 이메일 주소를 수집하여 이메일로 보내는 간단한 양식입니다. 지속될 수있는 것이 없으므로 모델이 없습니다.

내가 일 경우에 모델이있는 경우 form_for(@model, remote: true)으로 성공했습니다. 모델이없는 경우에 적합한 도우미를 찾지 못하는 것 같습니다. 내가 form_tag(named_path, remote: true) 시도하고 그 작품,하지만 아약스를 사용하지 않습니다.

예를 들어 적절한 컨트롤러 (예 : .html.erbroutes.rb)를 사용한 예를 가리키는 포인터는 정말 감사하겠습니다.

+1

"작동하지만 아약스를 사용하지 않습니다." 그게 무슨 뜻 이니? 그것은 비 원격 양식을 생성하고 데이터를 정상적으로 게시합니까? – shime

+0

예, 정상적으로 게시되지만 페이지를 다시로드합니다. –

답변

3

다음은 어떻게 해결 했는가? 열쇠는 form_tag을 사용하고 내 경로와 정확하게 일치하는 인수로 해시를 지정했습니다. 내 비즈니스 로직의 경우 컨트롤러 논리에 사용되는 "id"매개 변수를 전달해야합니다.

<%= form_tag(sendmail_path({ id: 1}), remote: true) do %> 
    <%= text_field_tag :email, params[:email] %> 
    <%= submit_tag "Send", remote:true %> 
<% end %> 

routes.rb

는 :

MyApp::Application.routes.draw do 
    post '/sendmail/:id(.:format)' => 'mycontroller#sendmail', :as => 'sendmail' 
    # etc... 
end 

또한 제출 후 양식을 업데이트하는 sendemail.js.erb 템플릿을 제공했다.