Как передать html на основе ruby-кода / erb в метод, ожидающий строку в Rails 3? - PullRequest
0 голосов
/ 03 мая 2011

Следующий код не работает, потому что я не могу получить доступ к помощнику внутри контроллера:

string << "#{has shared link_to @review.title, @review}"

Но в рамках действия (или, возможно, метода в модели) мне все же нужно передать HTML, который будет сгенерирован из этого.

Я попробовал экземпляр шаблона, но не работает в Rails 3

1 Ответ

0 голосов
/ 03 мая 2011

Просто в качестве основного примера, скажем, у вас есть:

app / messages_controller.rb и

хелперов / messages_helper.rb

В вашем messages_helper.rb у вас может быть что-то вроде того, что вы предложили.

#Also you should use = instead of <<
#You can only use << on a variable that has already been initialised
#a =  "hello "  #=> "hello"
#a << "world"   #=> "hello world"
#b << "whatevs" #=> ERROR

def dummy_helper_method
    @html_string = "has shared #{link_to @review.title, @review}"
    @html_string
end

Затем в вашем messages_controller.rb любым из ваших методов вы можете вызвать новый dummy_method, и теперь вы получите доступ к переменной экземпляра @html_string

def index
    dummy_helper_method

    #you can now access your @html_string variable from inside this index method
end

Как примечание, это не правильный способ сделать это . Вы не должны вызывать это в своем контроллере, если вы не пытаетесь сделать что-то довольно специфическое с этим, что не похоже на вас. Если вы пытаетесь отобразить его в своем представлении, чтобы вы могли отобразить его, вы можете фактически вызвать свой вспомогательный метод, который вы только что создали, в любом из файлов представления ваших сообщений (views / messages / everything_in_here.html.erb). ) вместо вызова в вашем контроллере.

Например:

#views/messages/edit.html.erb
<%= dummy_helper_method %>

В любом случае, надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...