1

我的问题是,当我尝试从 simple_form_for 表单调用指定方法时,它不起作用。

这是我的代码:

<%= simple_form_for @user, :url => {:action => :register_iban}, :html => { :method => :post } do |f| %> 
                <div class="col-md-8">
                    <%= f.input :first_name, :label => t('user-show.payment.form.first_name'), placeholder: "Prénom" %>
                        <%= f.input :last_name, :label => t('user-show.payment.form.last_name'), placeholder: "Nom" %>
                        <%= f.input :iban, :label => t('user-show.payment.form.iban'), placeholder: "IBAN" %>
                        <%= f.input :bic, :label => t('user-show.payment.form.bic'), placeholder: "BIC" %>
                    </div>

                                    <div class="col-md-8 text-center">
                    <%= f.submit t('user-show.payment.title'), class: 'btn btn-danger' %>
                </div>
            <% end %>

因此,如您所见,我尝试从我的用户控制器调用 register_iban 方法。但是当我这样做时,我有一个错误:没有路由匹配 {:action=>"register_iban", :controller=>"users", :id=>"5", :locale=>nil}

每次我在控制器中创建一个新方法时,我必须在 routes.rb 文件中创建一个路由吗?在这里,我想制作这个网址:/users/5/register_iban(其中“5”是用户 ID)调用我的方法。

抱歉,但我从 ruby​​ 开始,我很卡住:/

4

2 回答 2

1

在您config/routes.rb尝试添加用户资源时

resources users do
  member do
    post :register_iban
  end
end
于 2015-10-17T12:46:02.143 回答
0

没有路由匹配 {:action=>"register_iban", :controller=>"users", :id=>"5", :locale=>nil}

此错误表示您正在尝试访问不存在的路由。

路线定义config/routes.rb

#config/routes.rb
resources :users do
   post :register_iban
end

这将允许您通过表单调用控制器register_iban中的方法。users

您还需要确保使用适当的助手调用路由:

<%= simple_form_for @user, url: user_register_iban(@user) %>
于 2015-10-17T13:21:44.433 回答