2013-08-24 24 views
0

我有一個Rails 2網站我試圖添加一個表單處理程序,但我遇到了將表單字段轉換爲表單處理程序字段的問題。有沒有辦法在Rails 2中爲text_field設置不同的ID和名稱?

表單代碼開頭:

<% form_for @newsavedmap, :html=>{:id=>'createaMap'} do |f| %> 

我不斷收到錯誤,當我嘗試之類的東西

<%= text_field :newsavedmap, :html=>{ :value => 'New Map', :name=>'newsavedmapname', :id=> 'savedmap_name', :size => '30' } %> 

錯誤:

ActionView::TemplateError (wrong number of arguments (1 for 2)) on line #284 of app/views/layouts/maptry.html.erb: 

這裏是田野。我如何將它們轉換爲Rails 2中的處理程序字段?

<input id="savemap_name" name="newsavedmapname" size="30" type="text" value="New Map"></p> 

    <select id="startdrop" name="startthere"> 
    <OPTIONS HERE> 
    </select> 

    <select multiple id="waypoints" class="mobile-waypoints-remove" name="waypointsselected[]"> 
    <OPTIONS HERE> 
    </select> 

感謝您提供任何幫助!

編輯1錯誤代碼爲Text_Field

使用Bigxiang的做法,我得到

Processing NewsavedmapsController#create (for IP at Date Time) [POST] 
    Parameters: {"endhere"=>"", "endthere"=>"SAMPLE ADDRESS 1", "newsavedmap"=>{"newsavedmapname"=>"test Map"}, "startthere"=>"SAMPLE ADDRESS 2", "starthere"=>"", "optimize"=>"on"} 

    ActiveRecord::UnknownAttributeError (unknown attribute: newsavedmapname) 

與 「newsavedmap」=> { 「newsavedmapname」=> 「測試地圖」}應該行剛剛閱讀

"newsavedmapname"=>"test Map" 

我該怎麼做?我控制器開頭:

def create 

    @newsavedmap = Newsavedmap.new(params[:newsavedmap]) 
    @newsavedmap.name = params[:newsavedmapname] 

回答

1

試試這個:

<% form_for @newsavedmap, :html=>{:id=>'createaMap'} do |f| %> 
    <%= f.text_field :newsavedmapname :id=>"savemap_name", :size=>30, :value=>"New Map"%> 
    <%= f.select :startthere, YOUR_COLLECTIONS, {}, {:id=>"startdrop"}%> 
    <%= f.select :waypointsselected, YOUR_COLLECTIONS, {}, {:id=>"waypoints", :class=>"mobile-waypoints-remove", :multiple => true}%> 
<% end %> 

確保YOUR_COLLECTIONS應該像[ '一', 'B', 'C']或[ '名稱1' 的陣列, id1],['name2',id2],['name3',id3]]。

如果你堅持的參數爲「newsavedmapname」 =>「測試地圖」,試試這個:

<% form_for @newsavedmap, :html=>{:id=>'createaMap'} do |f| %> 
    <%= text_field_tag :newsavedmapname, "New Map", :id=>"savemap_name", :size=>30%> 
    <%= select_tag :startthere, options_for_select(YOUR_COLLECTIONS), {:id=>"startdrop"}%> 
    <%= select_tag :waypointsselected, options_for_select(YOUR_COLLECTIONS), {:id=>"waypoints", :class=>"mobile-waypoints-remove", :multiple => true}%> 
<% end %> 

但我不明白爲什麼不使用參數的名稱作爲相同列的名稱。例如,我看到你的newsavedmap模型有一個名爲「name」的列。你可以用它直接

<% form_for @newsavedmap, :html=>{:id=>'createaMap'} do |f| %> 
    <%= f.text_field :name , :value=>"New Map" %> 
<% end %> 

在你的控制器,你可以刪除線@ newsavedmap.name =參數[:newsavedmapname]

def create 

    @newsavedmap = Newsavedmap.new(params[:newsavedmap]) 

    if @newsavedmap.save 
    ####### 
    end 
end 
+0

Bigxiang,我仍然在運行到錯誤。請參閱上文。此外,您的text_field代碼可能在newsavedmapname後缺少逗號。我在我的代碼版本中添加了逗號。 – KDP

+0

我更新了答案,請檢查它 – Bigxiang

相關問題