rails使用表单模板更新和创建

时间:2011-01-17 16:05:31

标签: ruby-on-rails forms edit

我想知道我哪里错了。所以我有一个表单模板来编辑和更新模型(多个)

<%= form_for :Car,@car,:url=>{:controller=>:cargo} do |form| %>
....
<%= form.submit "Save", :class => "submit" ,:class =>"Button_style"%>
<% end %>

在控制器(货物)中我有一些方法

def index
    @cars=Car.find_all_by_UserId(session[:user_id])
    if @cars.nil?
    end
  end

  def create_auto
      @car = Car.new(params[:Car])
      @car.UserId=session[:user_id];
      if @car.save
        redirect_to :action=>:index
      else
        render :action => "new_auto"
      end
  end

  def new_auto
    @car = Car.new
    @car.CarProperty.build
  end

  def edit_auto
    @car = Car.find(params[:id])
    if @car.nil?
      flash[:notice] = "Empty request"
    end
  end

  def update_auto
    @car = Car.find(params[:id])
      if @car.update_attributes(params[:Car])
      else
        render :action => "edit_auto"
      end
  end

要添加新车我使用按钮

<%= button_to "Add car",{:action=>:new_auto},{:class =>"Button_style",:method => "get"} %>

编辑 <%= button_to 'Change', :controller=>:cargo,:action=>:edit_auto,:id=>car.CarI d%&gt; 但是当我按下Save按钮时,我的意思是create_auto和save_auto没有运行

2 个答案:

答案 0 :(得分:1)

老实说,您需要退后一步,学习一些Rails约定,例如RESTful控制器的方法名称。

Rails,不仅仅是许多框架,如果你打击它的惯例,它会让你很难受。这通常是一件好事,因为它可以通过不重新发明轮子来提高生产率,但是你需要学习它们。

我推荐这些资源(没有双关语!):

答案 1 :(得分:0)

您使用的是非传统方法名称。如果您想这样做,则必须在表单中指定它们。否则我建议重命名方法以匹配rails约定。

create, update, …