2013-06-28 4 views
1

레일에 익숙하지 않고 약간의 문제가있는 상황은 일부 이미지가 첨부 된 제품 모델이 있다는 것입니다. 내 제품 페이지에서 ajax를 통해 새 이미지를 만들 수있는 버튼을 갖고 싶습니다.레이아웃이없는 폼 내의 Ajax 폼

<%= simple_form_for(@product) do |f| %> 
<%= f.error_notification %> 
<div class="inputs"> 
<%= f.input :name %> 
<%= f.input :description, :input_html => {:class => "wysihtml5 span6", :style => "height:400px;"} %> 
<%= f.association :images, label_method: :name, value_method: :id %> 
<h4>Upload new file</h4> 
</div> 
<%= link_to 'Add Image', '/images/new', :remote => true, :"data-replace" => "#image-form" %> 
<div id="image-form"> 
</div> 
<div class="actions"> 
    <%= f.button :submit %> 
</div> 
<% end %> 

그리고 성공적으로 아약스를 통해 페이지를로드 않습니다 내가 가지고 볼 _form 내 제품 내부

. 하지만 레이아웃없이로드하고 싶습니다. 이것이 가능한가? 부분 양식을 렌더링하고 레이아웃이없는 새 작업을 만들어야합니까 ??

답변

1

그래서 내가 요청하고 HTML을 반환하고 js가 아닌 것으로 가정합니다. 당신은 이제까지 AJAX 요청에서 반환이 요청해야하는 경우

는, 당신은 단순히 항상 render layout: false

당신이 할 수 있도록하고자하는 경우 컨트롤러를 말할 수 :이에있는 생각의 몇 가지 있습니다 컨트롤러가 기회에 전체 페이지를 반환, 당신은 GET 요청에 인수를 받아들이고 그에 따라 출력을 변경하거나에 컨트롤러를 알 수 있습니다 할 수 있습니다 :

respond_to do |format| 
    format.html # will render default with no block passed 
    format.js { render layout: false } 
end 

이 단지의 코드와 함께 작동합니다 당신의 지금 양식을 작성하십시오. 왜냐하면 :remote => true은 컨트롤러에 js를 반환하도록 지시하기 때문입니다. ble,하지만 브라우저에서 images/new에 액세스하면 html을 요청할 것입니다. (js를 요청한다고해서 js를 실제로 반환해야 함을 의미하지는 않습니다.이 경우에는 그렇지 않습니다. 반환되는 항목에 대해 적절한 조치를 취하는 것은 사용자의 몫입니다. 기술적으로 요구되는 것 이외).

1

다음 작업을 수행 할 수 있습니다. 당신의 행동을 새롭게하십시오.

def new 
#your code goes here 
render :layout => false 
end