Ruby on rails如何在索引方法之后更新记录

时间:2016-12-03 21:31:13

标签: ruby-on-rails ruby

我收到一封带有链接和一些GET参数的电子邮件:

http://localhost:3000/confirmations?hash_id=jkljkjkllkjlkl&user_id=13

此页面将显示一些数据和两个按钮:CONFIRM和CANCEL。

我从INDEX方法获取数据>

def index
    @confirmation = Invite.joins(:user).select('invites.id, invites.horario_desde, invites.horario_hasta, invites.estado, users.email, users.nombre, users.apellido, users.telefono, invites.complejo')
    .where(:hash_id => filter_params[:hash_id],:user_id => filter_params[:user_id]).first
end

所以,如果我点击CONFIRM,这个确认应该将状态更新为CONFIRMED。我该怎么办呢?

我在控制器中创建了一个更新方法:

def update
    if params[:commit] == 'Confirmar'
        @confirmation.estado = 'Confirmado' 
    elsif params[:commit] == 'Cancelar'
        @confirmation.estado = 'Cancelado'
    end
    if @confirmation.update
        @user = User.joins(:postulation).where(:postulation => {:id => @confirmation.postulation_id})
        UserNotifier.send_confirmation_to_user(@confirmation, @user)
    end
end

并且在我的视图中我试图制作一个form_for,但这里是我遇到麻烦的地方,无法使其成功。我的属性没有出现。

index.html.erb

<%= form_for @confirmation, url: confirmations_path(@confirmation) do |confirmation|%>
<p>Horario: de a <%= confirmation.horario_hasta %></p>
<p> Donde? <%= confirmation.complejo%></p>

<%=f.submit 'Confirmar'%>
<%=f.submit 'Cancelar'%>
<%end%>

我的路线&gt;

  get '/confirmations' => 'confirmations#index', as: 'pepe'
  post '/confirmations' => 'confirmations#update', as: 'confirmations'

错误:

undefined method `some_field' for #<ActionView::Helpers::FormBuilder:0x36e5800>

0 个答案:

没有答案