ruby-on-rails - 将变量从一个 Action 传递到另一个 Action

标签 ruby-on-rails ruby-on-rails-3.1

我的 Controller 中有一个显示操作:

  # GET /posts/1
  # GET /postings/1.json
  def show
    @post = Post.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @posts }
    end
  end

我在同一个 Controller 中还有另一个 Action

  def dosomething
      @currentpost = ??
  end

如何在 dosomething 操作中获取对当前显示帖子的引用?

最佳答案

你说 dosomething 是一个 Action 。这意味着,它是在单独的 HTTP 请求中调用的。

有几种方法可以在请求之间共享数据:

  • 存储在 session 中
  • 如果 dosomething 是表单的操作,则将其存储在表单的隐藏字段中
  • 将其作为参数转发,如果 dosomethinglink_to
  • 调用
  • 如果 dosomethingpost 的一个 Action ,而所有这些都在 PostsController 中,那么你有一个到达这个 Action 的路径:

在您的显示 View 中使用

<%= link_to 'do something', dosomething_post_path(@post) %>

在你的行动中

def dosomething
  @currentpost = Post.find(params[:id])
  ....
end

在你的 routes.rb 你需要类似

resources :posts do
  member do
    get 'dosomething'
  end
end

或用表格:
在你看来:

<%= form_for @message, :url => {:action => "dosomething"}, :method => "post" do |f| %>
   <%= hidden_field_tag :post_id, @post.id %>
...

在您的 Controller 中:

def dosomething
  @currentpost = Post.find(params[:post_id])
  ....
end

关于ruby-on-rails - 将变量从一个 Action 传递到另一个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16884117/

相关文章:

java - 在 jruby on Rails 中哪里设置 java 选项?

ruby-on-rails - Rails 5 中的 RuntimeError 无法修改卡住的字符串

ruby-on-rails - Rails schema.rb 不包含新的自定义 Postgres 函数

ruby-on-rails - 更好的关联性能

ruby-on-rails - Ruby on Rails - 2 种用户类型

ruby-on-rails - 如何检查 Rails 3.x 中错误处理的特定救援条款?

ruby-on-rails - 在 Chrome/Firefox 浏览器应用程序关闭后,Devise Rememberable 无法正常工作

ruby - 新手 Ruby on Rails - 从 View 将字符串传递给方法?

mysql - 如何使用 MySQL 在同一行中显示以前的数据?

javascript - 避免 HTML 请求并仅进行 js 调用 - ruby​​ on Rails