2

レールには全部で 9 個のボタンがあります。関数を手動で入力して、データベースにデータを入力しました@button_1.save

私の質問は:

レールで @button_i.save 関数を使用するにはどうすればよいですか? for ループの処理が完了しました。残っているのは、ボタンの保存機能です。

どうもありがとう!

      button_number = params[:button_number]

      for i in (1..button_number)
         instance_variable_set("@button#{i}", 
                               Button.new(:title => params["button_title_#{i}".to_sym], 
                               :order => i, 
                               :icon_url => params["button_icon_#{i}".to_sym], 
                               :navigation_id => @navigation.id, 
                               :next_navigation => params["selected_navigation_#{i}".to_sym].to_i, 
                               :next_page => params["selected_page_#{i}".to_sym].to_i))
         instance_variable_set("@button#{i}")
      end

      @button1.save
      @button2.save
      @button3.save
      @button4.save
      @button5.save
      @button6.save
4

4 に答える 4

2

の反対はinstance_variable_setinstance_variable_getあり、正しい答えにつながると思います。

1.upto(params[:button_number].to_i) do |i|
  instance_variable_set("@button#{i}", 
    Button.new(
      :title => params["button_title_#{i}".to_sym], 
      :order => i, 
      :icon_url => params["button_icon_#{i}".to_sym], 
      :navigation_id => @navigation.id, 
      :next_navigation => params["selected_navigation_#{i}".to_sym].to_i, 
      :next_page => params["selected_page_#{i}".to_sym].to_i
    )
  )
  instance_variable_get("@button#{i}").save
end
于 2013-01-16T07:41:00.293 に答える
2
for i in ...
  eval("@button#{i}.save")
end
于 2013-01-16T07:41:09.183 に答える
0

constantize関数呼び出しステートメントは文字列であると思うので、ruby関数を使用してみてください。

button_number = params[:button_number]

      for i in (1..button_number)
         instance_variable_set("@button#{i}", 
                               Button.new(:title => params["button_title_#{i}".to_sym], 
                               :order => i, 
                               :icon_url => params["button_icon_#{i}".to_sym], 
                               :navigation_id => @navigation.id, 
                               :next_navigation => params["selected_navigation_#{i}".to_sym].to_i, 
                               :next_page => params["selected_page_#{i}".to_sym].to_i))
        "@button#{i}".constantize.save();
      end
于 2013-01-16T07:27:12.930 に答える
-1

あなたが望むこれかもしれません-

button_number = params[:button_number].to_i

for i in (1..button_number)
             instance_variable_set("@button#{i}", 
                                   Button.new(:title => params["button_title_#{i}".to_sym], 
                                   :order => i, 
                                   :icon_url => params["button_icon_#{i}".to_sym], 
                                   :navigation_id => @navigation.id, 
                                   :next_navigation => params["selected_navigation_#{i}".to_sym].to_i, 
                                   :next_page => params["selected_page_#{i}".to_sym].to_i))
             instance_variable_set("@button#{i}")

      "@button#{i}".save

      end
于 2013-01-16T07:30:58.340 に答える