2012-04-11 49 views
0

Rails 3.1。我有以下幾點:擺脫形式,只用按鈕創建新記錄

// _form.html.erb 
<%= form_for ([@country, @state], :remote => true) do |td| %> 
    <div id= "state_errors" style="display:none"></div> 
    <%= td.text_field :position, :id => "next_state" %> 
    <div class="actions"> 
     <%= td.submit %> 
    </div> 
<% end %> 

// global.js 
function nextState() { 
    Array.max = function(array) { 
     return Math.max.apply(Math, array); 
    }; 
    var getLastState = $("input.sortable_state_item_position").map(function() { 
     return $(this).val(); 
    }).get(); 
    getLastState.push("0"); 

    return Array.max(getLastState) + 1; 
} 
$("input#next_state").val(nextState()); 

// states_controller.rb 
class StatesController < ApplicationController 
    before_filter :load 

    def load 
    @country = Country.find(params[:country_id]) 
    @states = State.all 
    end 

    def create 
    @state = @country.states.build(params[:state]) 
    @state.save 
    end 

    ... 
end 

你會發現,我創建了一個form標籤用戶點擊提交按鈕時創建一個記錄。但我不知道我是否可以擺脫整個form_for,只是使用正常的abutton來觸發create,因爲我有點兒覺得整個表格是多餘的,因爲用戶不需要輸入任何東西。我的JavaScript自動輸入值。

請指教。非常感謝。

回答

0

在我的狀態控制器:

def create 
    @state = @country.states.build(params[:trip_day]) 
    @state.position = State.where(:country_id => @country.id).maximum(:position).to_i + 1 
    @state.save 
end 

更換form本:

<%= link_to "Add new state", country_states_path(@country), :remote => true, :method => :post %> 

我刪除了nextState()功能,整個form