相关疑难解决方法(0)

Rails:一个表单中的多提交按钮

假设我有一个文章模型,在文章"新"视图中我有两个按钮,"发布"和"保存草稿".

我的问题是如何知道在控制器中单击了哪个按钮.

我已经有了解决方案,但我认为必须有更好的方法.我目前在视图中使用的是:

<div class="actions">
  <%= f.submit "Publish" %>
  <%= f.submit "Save Draft", :name => "commit" %>
</div>
Run Code Online (Sandbox Code Playgroud)

所以在控制器中,我可以使用params [:commit]字符串来处理该操作.

def create
  @article = Article.new(params[:article])
  if params[:commit] == "Publish"
    @article.status = 'publish'
    // detail omitted
  end

  @article.save
end
Run Code Online (Sandbox Code Playgroud)

但我认为使用视图相关字符串并不好.你能告诉我另一种方法吗?

更新:由于这些按钮的形式相同,所以它们都会进入"创建"动作,这对我来说没问题.我想要的是在创建操作中处理它,例如给Article模型一个'status'列并保持'public'或'draft'.

forms action ruby-on-rails

59
推荐指数
3
解决办法
3万
查看次数

Rails - 如何在javascript中创建的表单中添加CSRF保护?

我正在使用backbone.js,效果很好.但我作为javascript模板创建的表单缺少rails csrf保护令牌.如何将其添加到我在javascript中创建的模板中?

javascript ruby-on-rails csrf backbone.js ruby-on-rails-3

47
推荐指数
3
解决办法
3万
查看次数

Ruby on Rails:如何让多个提交按钮转到不同的方法(也许带有with_action?)

所以..

<%= submit_tag 'Save', :name => 'save' %>
<%= submit_tag 'Save to Library', :name => 'library' %>
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中:

with_action do |a|
    a.save do

    end

    a.library do

    end
end
Run Code Online (Sandbox Code Playgroud)

问题是只有一个动作被调用...对于两个submit_tags都是同一个...任何想法为什么?

或者我如何获得两个按钮将表单提交给两种不同的方法?

ruby forms ruby-on-rails form-submit

10
推荐指数
1
解决办法
1万
查看次数

具有多个控制器动作的form_for用于提交

如何在form_for提交时传递网址?我正在尝试使用一个表单,每个按钮指向每个控制器操作,一个是搜索,另一个是创建.是否有可能在同一表单上有2个提交按钮和不同的操作?

<%= form_for @people do |f| %>
    <%= f.label :first_name %>:
    <%= f.text_field :first_name %><br />

    <%= f.label :last_name %>:
    <%= f.text_field :last_name %><br />

    <%= f.submit(:url => '/people/search') %>
    <%= f.submit(:url => '/people/create') %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails form-for ruby-on-rails-3

7
推荐指数
1
解决办法
1万
查看次数