如何通过一个return值的操作来查看?
How to pass a return value of operation to view?
我花了很多时间,仍在尝试弄清楚如何将操作结果 (return) 传递到我的视图。关于文档,我在概念文件夹中创建了单元格、操作和视图文件夹。我正在使用搜索应用程序,这是我的 cell/show.rb
module Search::Cell
class Show < Trailblazer::Cell
end
end
这里是view/show.rb
<h1> Hello! </h1>
#how to pass result here?
<a href="/search">Return back</a>
我的operation/show.rb
require "trailblazer/operation"
module Search::Operation
class Show < Trailblazer::Operation
step :hello_world!
fail :log_error
def hello_world!(options, search_word)
puts "Hello, Trailblazer!"
search_word = search_word[:params]
search_word.downcase!
true
end
def log_error
p "Some error happened!!"
true
end
end
end
和search_controller.rb
class SearchController < ApplicationController
def index
search_word = params[:text]
if search_word.present?
Search::Operation::Show.(params: search_word)
render html: cell(Search::Cell::Show).()
else
render html: cell(Search::Cell::Index).()
end
end
end
我应该使用哪个变量或方法来传递操作结果(hello_world!要查看的方法?我尝试了不同的东西(听说过一些关于 ctx 变量的信息,也尝试过常见的实例变量 rails app) 和 pry 调试了很多都没有解决。请帮助我!
根据 docs,您似乎有两个选择。
- 将您的操作结果作为 "model" 传递,并通过可在单元格模板中访问的模型变量访问它。
class SearchController < ApplicationController
def index
search_word = params[:text]
if search_word.present?
result = Search::Operation::Show.(params: search_word)
render html: cell(Search::Cell::Show, result)
else
render html: cell(Search::Cell::Index)
end
end
end
然后在您的模板中,假设您使用的是 ERB:
<h1> Hello! </h1>
The result is <%= model %>
<a href="/search">Return back</a>
- 在上下文中传递您的操作结果,并通过单元格 class 中定义的方法访问它。
class SearchController < ApplicationController
def index
search_word = params[:text]
if search_word.present?
result = Search::Operation::Show.(params: search_word)
render html: cell(Search::Cell::Show, nil, result: result)
else
render html: cell(Search::Cell::Index)
end
end
end
然后在您的单元格中 class:
module Search::Cell
class Show < Trailblazer::Cell
def my_result
#here is the logic you need to do with your result
context[:result]
end
end
end
然后在您的模板中,假设您使用的是 ERB:
<h1> Hello! </h1>
The result is <%= my_result %>
<a href="/search">Return back</a>
我花了很多时间,仍在尝试弄清楚如何将操作结果 (return) 传递到我的视图。关于文档,我在概念文件夹中创建了单元格、操作和视图文件夹。我正在使用搜索应用程序,这是我的 cell/show.rb
module Search::Cell
class Show < Trailblazer::Cell
end
end
这里是view/show.rb
<h1> Hello! </h1>
#how to pass result here?
<a href="/search">Return back</a>
我的operation/show.rb
require "trailblazer/operation"
module Search::Operation
class Show < Trailblazer::Operation
step :hello_world!
fail :log_error
def hello_world!(options, search_word)
puts "Hello, Trailblazer!"
search_word = search_word[:params]
search_word.downcase!
true
end
def log_error
p "Some error happened!!"
true
end
end
end
和search_controller.rb
class SearchController < ApplicationController
def index
search_word = params[:text]
if search_word.present?
Search::Operation::Show.(params: search_word)
render html: cell(Search::Cell::Show).()
else
render html: cell(Search::Cell::Index).()
end
end
end
我应该使用哪个变量或方法来传递操作结果(hello_world!要查看的方法?我尝试了不同的东西(听说过一些关于 ctx 变量的信息,也尝试过常见的实例变量 rails app) 和 pry 调试了很多都没有解决。请帮助我!
根据 docs,您似乎有两个选择。
- 将您的操作结果作为 "model" 传递,并通过可在单元格模板中访问的模型变量访问它。
class SearchController < ApplicationController
def index
search_word = params[:text]
if search_word.present?
result = Search::Operation::Show.(params: search_word)
render html: cell(Search::Cell::Show, result)
else
render html: cell(Search::Cell::Index)
end
end
end
然后在您的模板中,假设您使用的是 ERB:
<h1> Hello! </h1>
The result is <%= model %>
<a href="/search">Return back</a>
- 在上下文中传递您的操作结果,并通过单元格 class 中定义的方法访问它。
class SearchController < ApplicationController
def index
search_word = params[:text]
if search_word.present?
result = Search::Operation::Show.(params: search_word)
render html: cell(Search::Cell::Show, nil, result: result)
else
render html: cell(Search::Cell::Index)
end
end
end
然后在您的单元格中 class:
module Search::Cell
class Show < Trailblazer::Cell
def my_result
#here is the logic you need to do with your result
context[:result]
end
end
end
然后在您的模板中,假设您使用的是 ERB:
<h1> Hello! </h1>
The result is <%= my_result %>
<a href="/search">Return back</a>