Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 表单未提交到自定义操作_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 表单未提交到自定义操作

Ruby on rails 表单未提交到自定义操作,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,我对Rails还是比较陌生的,在这里我已经研究了很多类似的问题,但是到目前为止没有一个问题对我有帮助。所以我有一个表格,我想发送一封简单的电子邮件。它会在引导模式中弹出,如下所示: .form-horizontal = form_tag :url => { :action => :share_event }, remote: true, html: {"data-type" => :json} do .control-group = label_tag

我对Rails还是比较陌生的,在这里我已经研究了很多类似的问题,但是到目前为止没有一个问题对我有帮助。所以我有一个表格,我想发送一封简单的电子邮件。它会在引导模式中弹出,如下所示:

.form-horizontal
  = form_tag :url => { :action => :share_event }, remote: true, html: {"data-type" => :json} do
    .control-group
      = label_tag :to
      = text_field_tag :to
    .control-group
      = label_tag :from
      = text_field_tag :from
    .control-group
      = label_tag :subject
      = text_field_tag :subject  
    - hidden_field_tag :event_url, :value => url
    .actions
      = submit_tag 'share event', :class => "btn btn-mini submit"
在我的控制器中:

def share_event
  @to = params[:to]
  @from = params[:from]
  @subject = params[:subject]
  @url = params[:url]
  respond_to do |format|
    EventMailer.share_event(@to, @from, @subject, @url).deliver
    redirect_to events_path, notice: 'Event sent'
  end 
end

  EventMailer.share_event(@to, @from, @subject, @url).deliver
end
路线:

resources :events do
  post :share_event, :on => :collection
end
问题是当我提交时,它使用了“创建”操作,而不是“共享事件”。我尝试过很多方法,但它一直使用“create”。以下是日志摘录:

Started POST "/events?html%5Bdata-type%5D=json&remote=true&url=share_events_path" for 41.134.48.225 at 2012-11-06 15:34:25 +0100
Processing by EventsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7/6pg9XX/N09qUB+SUlWOdpCsgPOAiXM+nC+mq6VtKE=", "to"=>"to@example.com", "from"=>"from@example.com", "subject"=>"gfh", "event_url"=>"{:value=>\"http://events.example.com/events/3\"}", "commit"=>"share event »", "html"=>{"data-type"=>"json"}, "remote"=>"true", "url"=>"share_events_path"}
如有任何帮助/建议,将不胜感激


非常感谢

我不能确定问题出在哪里,但我猜是在你的
表单标签中。您可以尝试以下修改

在您的
route.rb中

resources :events do
  collection { post :share_event }
end
在你看来

替换:

= form_tag :url => { :action => :share_event }, remote: true, html: {"data-type" => :json} do
与:

请检查api文档

如果可行,建议命名为: routes.rb

resources :events do
  collection { post :share }
end
因此,您可以将其称为
share\u events\u path

= form_tag(share_events_path({format: 'json'}), remote: true) do

太好了,这很有效。非常感谢您的帮助,信息和提示好先生。
= form_tag(share_events_path({format: 'json'}), remote: true) do