이 질문에 대한 쉬운 대답이 틀림 없지만 여전히 작동하지 않습니다.RoR javascript 함수를 통해 params에 app id를 전달하는 방법
저는 사용자가 데이터베이스 (생성, 업데이트, 표시, 편집, 삭제 등)를 통해 프로젝트를 관리 할 수있는 Ruby On Rails 응용 프로그램을 보유하고 있습니다. 예를 들어 사용자가 프로젝트를 편집하면 http : // : 3000/projects/3/edit와 같은 페이지로 이동하여 편집 할 수 있습니다. 이 예에서는 사용자가 프로젝트 3을 편집하고 있습니다.
프로젝트를 편집하려면, 사용자는이 버튼이 방법을# GET /projects/1/edit
def edit
@project = Project.find(params[:id])
end
전화
<td><%= button_to 'Edit', { :action => "edit", :id => project }, :method => :get %></td>
을 클릭하고 잘 작동합니다.
그러나 updateFields라는 또 다른 메서드를 호출하여 필드가 수정 될 때 updateFields라는 JavaScript 함수가 실행되고 양식의 다른 관련 필드를 수정하는 AJAX 요청을 호출하도록했습니다. 다음은 updateFields에서 발췌 한 것입니다 : 컨트롤러에서
<script language="JavaScript" type="text/javascript">
function updateFields(){
$.ajax({
url: "<%= update_fields_projects_url %>",
data: {
project_year: $('.project_year_class').val(),
project_type: $('.project_type_class').val(),
<snip>
}
});
}
</script>
, 나는 다음과 같이 내가 PARAMS 배열에 필요한 모든 정보를 얻을 수 있습니다
# PUT /projects/1
# PUT /projects/1.json
def update_fields
@project = Project.find(params[:project])
@project_year = params[:project_year]
@project_type = params[:project_type]
<snip>
respond_to do |format|
if @project.update_attributes(params[:project])
format.js
format.html
else
format.html { render :action => "update" }
format.json { render :json => @project.errors, :status => :unprocessable_entity }
end
end
end
을 내가 가진 문제가 있다는 것입니다 I '양식을 업데이트 할 수 아니에요, 내가 직접 프로젝트 ID를 지정하면 서버에서, 나는 다음과 같은 오류 메시지
ActiveRecord::RecordNotFound (Couldn't find Project without an ID):
app/controllers/projects_controller.rb:101:in `update_fields'
Rendered /var/lib/gems/1.8/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.5ms)
Rendered /var/lib/gems/1.8/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (2.2ms)
Rendered /var/lib/gems/1.8/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (10.8ms)
를 참조, 모두가 잘
작동@project = Project.find(3)
내 질문은 어떻게 그 id 매개 변수가 project_year 및 project_type과 같은 방식으로 javascript 함수에 의해 컨트롤러로 전달되게합니까? 이 예제에서는 3이지만 프로젝트가 생성 될 때 할당되므로 모든 프로젝트마다 다릅니다.
갱신 1 ProjectsController
올바른 Project
을 찾기 위해 노력하지만 당신은 어떤 ID를 지정하지
<%= form_for(@project, :html => {:name => "ProjectInfo"}) do |f| %>
<input type=button id=project_info_button_id value="Show Details" onclick="showHideDiv('project_info_id','project_info_button_id');">
<div class="form input", id='project_info_id', style='display:none'>
<% concat "Project Year" %>
<%= f.text_field :ProjectYear, {:class=>"project_year_class", :Size=>6, :style=>"text-align:right"} %>
<snip>
<% end %>
<% end %>
당신이 컨트롤러의 update_field 조치에 PARAMS의 출력을 게시 할 수 있습니까? ('puts params.inspect') – MrYoshiji
신속한 답변을 해주신 MrYoshiji에게 감사드립니다. params.inspect는 javascript 함수에 명시 적으로 전달 된 모든 매개 변수를 출력하지만 올바른 구문을 파악할 수 없기 때문에 프로젝트 ID는 아무 것도 출력하지 않습니다. 그 구문을 도와 주시면 고맙겠습니다. 감사합니다 – rh4games